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.