hostapd에 NAT iptables 규칙을 사용하는 방법


9

내 PC에는 2 개의 네트워크 인터페이스가 있으며, wlan0& eth0에 WiFi 포트를 액세스 포인트로 사용하고 싶습니다 wlan0.

  • hostapd시설을 사용 했고 로컬 네트워크 내의 라우팅 모드에서 제대로 작동합니다. 사용자는 액세스 포인트에 연결할 수 있으며 DHCP는 두 세그먼트 모두에서 올바르게 작동합니다.
  • ADSL 라우터의 내장 방화벽 만 사용하고 싶기 때문에 방화벽 hostapd이있는 PC에는 방화벽이나 iptables규칙 이 없으며 iptables방화벽이 비활성화되어 있습니다.

내 순 구성은 다음과 같습니다.

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

iptablesPC에서 간단한 NAT 구성을 구성하려면 어떻게합니까 ?

  • hostapd(network 192.168.10.X)를 통해 네트워크에 연결된 모든 사용자 가 인터넷에 액세스하고 인터넷에 액세스하기를 원합니다.
  • NAT 만 트래픽을 필터링하고 싶지 않습니다.

WiFi 세그먼트에서 인터넷에 연결할 수 없습니다.

  • WiFi에 연결된 클라이언트에는 DHCP 주소 192.168.10.48가 있으며 유일한 트래픽은 eth0주소 에서 온 것입니다.
    16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46
    
    참고 : 주소는이 192.168.0.48아니므 192.168.10.48로 가장 무도회 솔기가 작동합니다.
  • 더 이상 192.168.0.1이전에는 불가능했던 [ADSL 라우터]를 핑 (ping) 할 수 없습니다 .
  • 인터넷에서 WIFI 사용자로의 액세스는 어떻습니까? 물론 인터넷에서 특정 WiFi 포트 풀링을 해당 WiFi 사용자의 특정 IP 주소로 전달하여 ADSL 라우터를 설정합니다.

편집 1 :

  • systemctl다음 iptables과 같이 표시 됩니다 :
    iptables.service          loaded active exited
    
    내가 달렸어도 :
    systemctl enable iptables.service
    systemctl start iptables.service
    

편집 2 :

  • 작동하지만 컴퓨터를 부팅 할 때마다 시작 스크립트를 통해 다음을 수동으로 추가해야합니까?
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

아래에서 업데이트 된 응답을 참조하십시오 ...
MLu

답변:


6

가장 간단한 형태로 :

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

그러면 모든 WiFi 사용자 가 인터넷에 액세스 수 있습니다 .

물론 다른 라우팅 설정이 이미 완료되었다고 가정합니다.

  1. 커널에서 전달 가능

    sysctl net.ipv4.ip_forward=1
    
  2. 전달 가능 iptables:

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

NAT가 제대로 연결되었는지, 응답이 다시 오는지 등을 확인하기 위해 문제가 발생한 경우 tcpdump -nn -i eth0트래픽을 감시하는 데 사용하십시오 eth0.

편집 : "(시작 스크립트에서) 컴퓨터를 부팅 할 때마다 수동으로 추가해야합니다 ..." Linux 배포판에 따라 다릅니다. 안타깝게도 각 배포판마다 자체 방화벽 도구가 있습니다. 결국 그들은 단지 전화 iptables를 걸지만 어떤 이유로 든 iptables 작동 방식을 난독 화하는 것이 사용자가 원하는 것이라고 믿습니다.

귀하의 질문에 대답하기 위해-이 NAT 규칙을 자동으로 추가하도록 방화벽을 구성 할 수 있습니다. 그러나 정확한 방법은 Linux 배포판마다 다릅니다. 슬프지만 사실이야.


PC의 모든 방화벽이 비활성화되어 있습니다. 유일하게 실행되는 서비스는 iptables
mackowiakp

iptables == firewall-어쨌든 해당 MASQUERADE 규칙을 생성하도록 iptables를 구성해야합니다. 어떻게? 리눅스 배포판에 따라 다릅니다. 어딘가에 구성 파일이 있어야합니다. 어디? 리눅스 배포판에 따라 다릅니다.
MLu

그래서 당신은 mu iptables를 다스 렸습니다 :
mackowiakp

따라서 당신은 mu iptables를 지배했습니다 : [root @ media ~] # iptables -L Chain INPUT (policy ACCEPT) target prot opt ​​source destination Chain FORWARD (policy ACCEPT) target prot opt ​​source destination Chain OUTPUT (정책 ACCEPT) target prot opt ​​source destination . 그리고 시작과 같은 라인 : iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. 따라서 iptables의 구현은 사실상 "투명한"방화벽이거나 방화벽이없는 방화벽입니다
mackowiakp

5

나는 모든 경우에 방화벽을 썼다. 사용하기 전에 README와 SCRIPT를 읽으십시오. HOSTAP에 필요한 규칙을 포함 시켰습니다

필수 부품 :

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는 아래 줄이 모두 작동하려면 ACCEPT 여야합니다.

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.