iptables przekazywanie między dwoma interfejsami


26

Mam więc system Linux z dwoma interfejsami bezprzewodowymi, jeden to stacja, a drugi AP.

wlan0 (stacja) - Połączony z połączeniem internetowym

wlan1 (AP) - Łączą się z nim inni klienci.

Chciałbym, aby klienci podłączeni do wlan1 mieli dostęp do Internetu na wlan0. I chciałbym to zrobić z iptables, ponieważ moje jądro nie obsługuje mostkowania ...

Oto, co próbowałem do tej pory z iptables, ale to nie działa:

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

Byłbym wdzięczny za wszelką pomoc.


1
IPTABLES to stanowy filtr pakietów, który pozwala / upuszcza / zmienia pakiety. To nie jest router ani most. Twoje polecenia dostosowują zaporę ogniową, aby zezwalać na ruch, ale nie robią nic, aby faktycznie ją przekazać.
— Zoredache,

Więc zamień jądro na takie, które ma potrzebne funkcje. W końcu jest to „pole linuksowe”.
— Michael Hampton

Czy mogę osiągnąć to, co próbuję zrobić z „trasą”? Zajmę się także odbudową jądra z obsługą mostu, ale zastanawiam się, czy są inne opcje.
— broody

Trasa informuje, gdzie jechać, gdy jest włączona. Michael powiedział ci, co musisz zrobić, aby wesprzeć routing. Następnie musisz włączyć go za pomocą sysctl.
— Magellan,

Odpowiedzi:


35

Po pierwsze, aby umożliwić hostom łączącym się z twoim prywatnym interfejsem wychodzenie do Internetu, nie musisz mostkować interfejsów, musisz przekierowywać pakiety przychodzące z jednego interfejsu do drugiego, gdzie wychodzą na wolność.

Aby to zrobić, wystarczy:

  1. Włącz przekazywanie na swoim Linux-ie:
  2. Zezwól określonym pakietom (lub wszystkim z nich) na przechodzenie przez router
  3. Jak ktoś powiedział, ponieważ netfilter jest bezstanową zaporą ogniową, zezwól na ruch dla już ustanowionych połączeń
  4. Zmień adres źródłowy pakietów wychodzących do Internetu
    echo 1> / proc / sys / net / ipv4 / ip_forward
    iptables -A DO PRZODU -i wlan1 -o wlan0 -j AKCEPTUJĘ
    iptables -A DO PRZODU -i wlan0 -o wlan1 -m stan - stan USTANOWIONO, POWIĄZANE \
             -j AKCEPTUJĘ
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Że należy to zrobić.


Myślę, że prawdopodobnie masz na myśli: echo 1 >/proc/sys/net/ipv4/ip_forwarddla pierwszego wiersza
— Jason Tan

to jest to ... nie wiem, co się stało z ostatnią częścią tej linii ... poprawione.
— Torian

Myślę, że musiałbyś również ustawić klientów, aby używali Linuksa jako bramy.
— Jason Tan,

Aby utrzymać przekazywanie przez ponowne uruchomienie, musisz to zrobić: „echo” net.ipv4.ip_forward = 1 ”>> /etc/sysctl.conf”
— Jason Tan,

1
@StudentsTea Tak, ty, chyba że iptables" FORWARDstół jest ustawiony na przejmującego globalnie polityki. Mimo to nadal będziesz potrzebował natreguł tabeli.
— Thomas Ward,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.