Cách sử dụng quy tắc iptables NAT cho hostapd


9

Máy tính của tôi được trang bị với hai giao diện mạng, wlan0& eth0, và tôi muốn sử dụng cổng WiFi như một điểm truy cập trên wlan0.

  • Tôi đã sử dụng hostapdcơ sở và nó hoạt động đúng trong chế độ định tuyến trong mạng cục bộ; Người dùng có thể kết nối với điểm truy cập và DHCP hoạt động chính xác trong cả hai phân đoạn.
  • PC hostapdkhông có bất kỳ tường lửa hoặc iptablesquy tắc nào ( iptablesvà tường lửa bị tắt), vì tôi chỉ muốn sử dụng tường lửa tích hợp của bộ định tuyến ADSL.

Cấu hình mạng của tôi như sau:

  • 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)

Làm cách nào để định cấu hình cấu hình NAT đơn giản iptablescho PC trên PC?

  • Tôi muốn tất cả người dùng được kết nối với mạng qua hostapd(mạng 192.168.10.X) có quyền truy cập và từ internet
  • Tôi không muốn lọc bất kỳ lưu lượng truy cập, chỉ NAT.

Tôi không thể nhận được kết nối với internet từ phân khúc WiFi:

  • Ứng dụng khách được kết nối với WiFi có địa chỉ DHCP 192.168.10.48và lưu lượng truy cập duy nhất được bật eth0từ địa chỉ:
    16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46
    
    Lưu ý: Địa chỉ là 192.168.0.48không 192.168.10.48, vì vậy các đường nối masage hoạt động.
  • Tôi không còn có thể ping 192.168.0.1[bộ định tuyến ADSL], điều này là có thể trước đây.
  • Còn việc truy cập từ internet đến người dùng WIFI thì sao? Tất nhiên tôi sẽ thiết lập trong bộ định tuyến ADSL, chuyển tiếp cổng IP cụ thể từ Internet sang địa chỉ IP cụ thể của người dùng WiFi đó.

CHỈNH SỬA 1:

  • systemctlhiển thị iptablesnhư:
    iptables.service          loaded active exited
    
    Mặc dù tôi đã chạy:
    systemctl enable iptables.service
    systemctl start iptables.service
    

EDIT 2:

  • Nó hoạt động, nhưng mỗi lần tôi khởi động máy tính, có phải bình thường phải thêm thủ công sau đây thông qua một tập lệnh khởi động không?
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Xem phản hồi cập nhật của tôi bên dưới ...
MLu

Câu trả lời:


6

Ở dạng đơn giản nhất:

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

Điều đó sẽ cho phép tất cả người dùng WiFi truy cập vào Internet.

Tất nhiên, giả sử thiết lập định tuyến khác của bạn đã được thực hiện, cụ thể là:

  1. Chuyển tiếp kích hoạt trong kernel

    sysctl net.ipv4.ip_forward=1
    
  2. Chuyển tiếp kích hoạt trong iptables:

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

Sử dụng tcpdump -nn -i eth0để xem lưu lượng truy cập eth0trong trường hợp có vấn đề để xem liệu nó có được NAT đúng không, nếu phản hồi trở lại, v.v.

EDIT: "Tôi phải thêm thủ công mỗi lần tôi khởi động máy tính (từ tập lệnh khởi động) ..." Nó phụ thuộc vào phân phối Linux mà bạn có. Đáng buồn thay, mỗi bản phân phối đều có công cụ Tường lửa riêng - cuối cùng họ chỉ gọi iptablesnhưng vì một số lý do, các tác giả tin rằng làm xáo trộn cách thức hoạt động của iptables là điều người dùng muốn.

Để trả lời câu hỏi của bạn - rất có thể tường lửa của bạn có thể được cấu hình để tự động thêm quy tắc NAT này. Tuy nhiên, cách chính xác khác nhau giữa các bản phân phối Linux không có lý do chính đáng. Đáng buồn nhưng là sự thật.


Tất cả các tường lửa trên PC đều bị vô hiệu hóa. Dịch vụ duy nhất đang chạy là iptables
mackowiakp

iptables == tường lửa - Bằng cách nào đó bạn cần định cấu hình iptables để phát ra quy tắc MASQUERADE. Làm sao? Nó phụ thuộc vào phân phối linux của bạn. Phải có tập tin cấu hình ở đâu đó. Ở đâu? Nó phụ thuộc vào phân phối linux của bạn.
MLu

Vì vậy, bạn có mu iptables cai trị:
mackowiakp

Vì vậy, bạn đã cai trị mu iptables: [root @ media ~] # iptables -L Chain INPUT (ACCEPT) . Và tôi và dòng như vậy khi khởi động: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. Vì vậy, việc triển khai iptables của tôi là tường lửa "trong suốt" - hoặc không tường lửa
mackowiakp

5

Tôi đã viết một tường lửa cho tất cả các dịp. Vui lòng đọc README và SCRIPT trước khi sử dụng nó. Tôi đã bao gồm các quy tắc cần thiết cho HOSTAP

Bộ phận thiết yếu:

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 yêu cầu các dòng bên dưới phải được CHẤP NHẬN để hoạt động

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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.