Cara menggunakan aturan iptables NAT untuk hostapd

9

PC saya dilengkapi dengan dua antarmuka internet, wlan0& eth0, dan saya ingin menggunakan port WiFi sebagai titik akses aktif wlan0.

  • Saya menggunakan hostapdfasilitas dan berfungsi dengan baik dalam mode routing dalam jaringan lokal; pengguna dapat terhubung ke titik akses dan DHCP berfungsi dengan baik di kedua segmen.
  • PC dengan hostapdtidak memiliki firewall atau iptablesaturan apa pun ( iptablesdan firewall dinonaktifkan), karena saya hanya ingin menggunakan firewall bawaan router ADSL.

Konfigurasi bersih saya adalah sebagai berikut:

  • PC with hostapd -> cable connection -> ADSL router
  • wlan0 -> eth0 <-> 192.168.0.1 <-> internet
  • 192.168.10.1 -> 192.168.0.7 -> static routing to 192.168.10.X

PC ifconfig:

eth0  Link encap:Ethernet  HWaddr 00:12:3F:F2:31:65
      inet addr:192.168.0.7  Bcast:192.168.0.255  Mask:255.255.255.0
      inet6 addr: fe80::212:3fff:fef2:3165/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2169539 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1008097 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:3056198487 (2.8 GiB)  TX bytes:72727161 (69.3 MiB)
      Interrupt:16

lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:3398 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3398 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:495444 (483.8 KiB)  TX bytes:495444 (483.8 KiB)

mon.wlan0  Link encap:UNSPEC  HWaddr 00-14-A5-04-94-3C-90-F0-00-00-00-00-00-00-00-00
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:151 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:17092 (16.6 KiB)  TX bytes:0 (0.0 b)

wlan0 Link encap:Ethernet  HWaddr 00:14:A5:04:94:3C
      inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
      inet6 addr: fe80::214:a5ff:fe04:943c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:0 (0.0 b)  TX bytes:279392 (272.8 KiB)

Bagaimana cara mengkonfigurasi konfigurasi NAT sederhana iptablesuntuk itu di PC?

  • Saya ingin semua pengguna yang terhubung ke jaringan melalui hostapd(jaringan 192.168.10.X) memiliki akses ke dan dari internet
  • Saya tidak ingin menyaring lalu lintas apa pun, hanya NAT saja.

Saya tidak bisa mendapatkan koneksi ke internet dari segmen WiFi:

  • Klien yang terhubung ke WiFi memiliki alamat DHCP 192.168.10.48, dan satu-satunya lalu lintas aktif eth0dari alamat:
    16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46
    
    Catatan: Alamatnya 192.168.0.48tidak 192.168.10.48, jadi Masquerade bekerja.
  • Saya tidak bisa lagi ping 192.168.0.1[router ADSL], yang mungkin sebelumnya.
  • Bagaimana dengan akses dari internet ke Pengguna WIFI? Tentu saja saya akan mengatur di router ADSL, meneruskan pooling port IP tertentu dari Internet ke alamat IP tertentu dari pengguna WiFi tersebut.

EDIT 1:

  • systemctlmenunjukkan iptablessebagai:
    iptables.service          loaded active exited
    
    Meskipun saya berlari:
    systemctl enable iptables.service
    systemctl start iptables.service
    

EDIT 2:

  • Ini berfungsi, tetapi setiap kali saya mem-boot komputer, apakah normal jika harus menambahkan berikut secara manual melalui skrip startup?
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
mackowiakp
sumber
Lihat respons saya yang diperbarui di bawah ...
MLu

Jawaban:

6

Dalam bentuk yang paling sederhana:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Yang akan memungkinkan mengakses semua pengguna WiFi untuk internet.

Tentu saja dengan asumsi pengaturan perutean Anda yang lain sudah dilakukan, yaitu:

  1. Penerusan diaktifkan di kernel

    sysctl net.ipv4.ip_forward=1
    
  2. Penerusan diaktifkan di iptables:

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

Gunakan tcpdump -nn -i eth0untuk mengawasi lalu lintas eth0jika terjadi masalah untuk melihat apakah NATed benar, jika responsnya kembali, dll.

EDIT: "Saya harus menambahkan secara manual setiap kali saya mem-boot komputer (dari skrip startup) ..." Itu tergantung pada distribusi Linux yang Anda miliki. Sayangnya hampir setiap distro memiliki alat Firewall sendiri - pada akhirnya mereka hanya menelepon iptablestetapi untuk beberapa alasan penulis percaya bahwa mengaburkan cara kerja iptables adalah apa yang diinginkan pengguna.

Untuk menjawab pertanyaan Anda - kemungkinan besar firewall Anda dapat dikonfigurasi untuk menambahkan aturan NAT ini secara otomatis. Namun cara yang tepat bervariasi antara distro Linux tanpa alasan yang bagus. Sedih tapi benar.

MLu
sumber
Semua firewall di PC dinonaktifkan. Satu-satunya layanan yang berjalan adalah iptables
mackowiakp
iptables == firewall - Entah bagaimana Anda perlu mengkonfigurasi iptables untuk mengeluarkan aturan MASQUERADE itu. Bagaimana? Itu tergantung pada distribusi linux Anda. Harus ada file konfigurasi di suatu tempat. Dimana? Itu tergantung pada distribusi linux Anda.
MLu
Jadi, Anda memiliki iptables yang diperintah:
mackowiakp
Jadi, Anda memiliki iptables yang diperintah: [root @ media ~] # iptables -L Chain INPUT (ACCEPT kebijakan) target prot opt ​​sumber tujuan Chain FORWARD (kebijakan ACCEPT) target prot opt ​​sumber tujuan Chain OUTPUT (kebijakan ACCEPT) target prot opt ​​sumber tujuan tujuan . Dan saya dan baris tersebut dalam startup: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. Jadi implementasi saya dari iptables adalah de facto firewall "transparan" - atau tidak ada firewall
mackowiakp
5

Saya menulis firewall untuk semua kesempatan. Harap baca README dan SCRIPT sebelum menggunakannya. Saya memasukkan aturan yang diperlukan untuk HOSTAP

Bagian penting:

HostAP

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

HostAP membutuhkan baris-baris di bawah ini agar keduanya MENERIMA berfungsi

iptables -A INPUT -j ACCEPT >> /dev/null 2>&1 
iptables -A OUTPUT -j ACCEPT >> /dev/null 2>&1

https://github.com/diveyez/fw.sh

Ricky Neff
sumber