penerusan iptables antara dua antarmuka

26

Jadi saya punya kotak linux dengan dua antarmuka nirkabel, satu stasiun dan AP lainnya.

wlan0 (station) - Terhubung ke koneksi internet

wlan1 (AP) - Klien lain terhubung ke sana.

Saya ingin klien yang terhubung ke wlan1 untuk dapat mengakses internet di wlan0. Dan saya ingin melakukan ini dengan iptables karena kernel saya tidak memiliki dukungan bridging ...

Inilah yang saya coba sejauh ini dengan iptables tetapi tidak berfungsi:

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

Saya menghargai bantuan apa pun.

yg sering merenung
sumber
1
IPTABLES adalah paket-filter stateful, memungkinkan / menjatuhkan / menghancurkan paket. Ini bukan router, atau jembatan. Perintah Anda menyesuaikan firewall untuk mengizinkan lalu lintas, tetapi mereka tidak melakukan apa pun untuk benar-benar meneruskannya.
Zoredache
Jadi ganti kernel dengan yang memiliki fitur yang Anda butuhkan. Itu adalah "kotak linux," setelah semua.
Michael Hampton
Bisakah saya mencapai apa yang saya coba lakukan dengan 'rute'? Saya akan melihat ke dalam membangun kembali kernel dengan dukungan jembatan juga tetapi bertanya-tanya apakah ada opsi lain.
merenung
Rute memberi tahu ke mana harus pergi setelah diaktifkan. Michael memberi tahu Anda apa yang perlu Anda lakukan untuk mendukung perutean. MAKA Anda perlu menyalakannya melalui sysctl.
Magellan

Jawaban:

35

Pertama, untuk memungkinkan host yang terhubung pada antarmuka pribadi Anda untuk pergi ke internet, Anda tidak perlu menjembatani antarmuka, Anda perlu merutekan paket yang masuk pada satu antarmuka, ke yang lain, di mana mereka pergi ke alam liar.

Untuk melakukan itu, Anda hanya perlu:

  1. Aktifkan penerusan pada kotak linux Anda:
  2. Izinkan paket spesifik (atau semuanya) untuk melintasi router Anda
  3. Seperti yang dinyatakan seseorang, karena netfilter adalah firewall stateless, izinkan lalu lintas untuk koneksi yang sudah ada
  4. Ubah alamat sumber pada paket yang keluar ke internet
    gema 1> / proc / sys / net / ipv4 / ip_forward
    iptables -Sebuah ke depan -i wlan1 -o wlan0 -j MENERIMA
    iptables -Sebuah MAJU-i wlan0 -o wlan1 -m state --state ESTABLISHED, RELATED \
             -j MENERIMA
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Itu harus dilakukan.

Torian
sumber
Saya pikir Anda mungkin bermaksud: echo 1 >/proc/sys/net/ipv4/ip_forwarduntuk baris pertama
Jason Tan
itu saja ... tidak tahu apa yang terjadi pada bagian terakhir dari baris itu ... diperbaiki.
Torian
Saya pikir Anda juga harus mengatur klien untuk menggunakan kotak linux sebagai gateway mereka.
Jason Tan
Dan untuk membuat penerusan tetap melalui reboot Anda ingin melakukan ini: 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
Jason Tan
1
@StudentsTea Ya, Anda lakukan, kecuali Anda iptables' FORWARDtabel diatur untuk kebijakan menerima secara global. Anda masih membutuhkan nataturan tabel.
Thomas Ward