inoltro di iptables tra due interfacce


26

Quindi ho una scatola Linux con due interfacce wireless, una è una stazione e l'altra un AP.

wlan0 (stazione) - Connesso alla connessione Internet

wlan1 (AP) - Altri client si connettono ad esso.

Vorrei che i client connessi a wlan1 potessero accedere a Internet su wlan0. E mi piacerebbe farlo con iptables poiché il mio kernel non ha il supporto ponte ...

Ecco cosa ho provato finora con iptables ma non funziona:

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT

Gradirei qualsiasi aiuto.


1
IPTABLES è un filtro di pacchetti stateful, che consente / drop / mangles pacchetti. Non è un router o bridge. I tuoi comandi regolano il firewall per consentire il traffico, ma non fanno nulla per inoltrarlo.
— Zoredache,

Quindi sostituisci il kernel con uno che ha le caratteristiche di cui hai bisogno. È "una scatola di Linux", dopo tutto.
— Michael Hampton

Posso ottenere quello che sto cercando di fare con "route"? Esaminerò anche la ricostruzione del kernel con il supporto bridge, ma mi chiederò se ci sono altre opzioni.
— maledetto

Il percorso indica dove andare una volta abilitato. Michael ti ha detto cosa devi fare per supportare il routing. ALLORA devi accenderlo via sysctl.
— Magellan,

Risposte:


35

Innanzitutto, per consentire agli host che si connettono alla tua interfaccia privata di uscire su Internet, non hai bisogno di collegare le interfacce, devi instradare i pacchetti che arrivano su un'interfaccia, all'altra, dove vanno in libertà.

Per farlo, devi solo:

  1. Abilita l'inoltro sul tuo box Linux:
  2. Consenti a pacchetti specifici (o tutti) di attraversare il router
  3. Come affermato da qualcuno, poiché netfilter è un firewall senza stato, consente il traffico per connessioni già stabilite
  4. Modifica l'indirizzo di origine sui pacchetti che vanno su Internet
    echo 1> / proc / sys / net / ipv4 / ip_forward
    iptables -A FORWARD -i wlan1 -o wlan0 -j ACCETTA
    iptables -A FORWARD -i wlan0 -o wlan1 -m state --state STABILITO, CORRELATO \
             -j ACCETTA
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Questo dovrebbe farlo.


Penso che probabilmente intendi: echo 1 >/proc/sys/net/ipv4/ip_forwardper la prima riga
— Jason Tan,

tutto qui ... non so cosa sia successo all'ultima parte di quella riga ... corretto.
— Torian,

Penso che dovresti anche impostare i client in modo che utilizzino il box Linux come gateway.
— Jason Tan,

E per rendere persistente l'inoltro attraverso i riavvii, devi fare questo: 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
— Jason Tan,

1
@StudentsTea Sì, a meno che la tabella iptables"non FORWARDsia impostata su una politica di accettazione globale. Avresti comunque bisogno delle natregole della tabella in entrambi i casi.
— Thomas Ward,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.