연결된 모든 무선 클라이언트의 트래픽을 특정 IP 및 포트로 라우팅합니다.

연결된 모든 무선 클라이언트의 트래픽을 특정 IP 및 포트로 라우팅합니다.

다음 명령을 사용하여 내 서버에 액세스 포인트를 성공적으로 설정했습니다.Wi-Fi-AP 스냅샷

wakatana@server:~$ sudo wifi-ap.config get
debug: false
dhcp.lease-time: 12h
dhcp.range-start: 10.0.60.2
dhcp.range-stop: 10.0.60.199
disabled: false
share.disabled: false
share.network-interface: eth0
wifi.address: 10.0.60.1
wifi.channel: 6
wifi.country-code:
wifi.hostapd-driver: nl80211
wifi.interface: wlan0
wifi.interface-mode: direct
wifi.netmask: 255.255.255.0
wifi.operation-mode: g
wifi.security: wpa2
wifi.security-passphrase: passwordpassword
wifi.ssid: Ubuntu

이제 연결된 클라이언트의 모든 트래픽을 특정 IP_ADDRESS:PORT(당시 AP와 동일한 시스템에서 실행 중)로 라우팅하고 싶습니다. 클라이언트가 www.google.com을 방문하면 127.0.0.1:555로 리디렉션되는 것처럼 작동해야 합니다.

내가 올바르게 이해했다면 적어도 두 가지 가능한 해결책이 있지만 실제로 어떻게 작동하게 할 수 있는지 모르겠습니다.

  1. dnsmasq + nginx - 이전에 이 작업을 해본 적이 없어서 너무 복잡해 보이고 현재 DNS가 중단되지 않을지 모르겠습니다.
  2. iptables - 여기서는 기본적인 iptables 경험이 있지만 PREROUING, POSTROUTING, DNAT, SNAT 등에 대해 잘 모르겠습니다.

나는 다음을 시도했다

$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 555 -j DNAT --to-destination 127.0.0.1
$ sudo iptables -t nat -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 14 packets, 1116 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1852  351K DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
    0     0 DNAT       tcp  --  wlan0  *       0.0.0.0/0            0.0.0.0/0            tcp dpt:555 to:127.0.0.1

그러나 효과가 없습니다.

답변1

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 555 -j DNAT --to-destination 127.0.0.1

현재 규칙은 트래픽을 <some_server>:555으로 만 리디렉션합니다 127.0.0.1:555. HTTP는 포트 80을 사용하고 HTTPS는 포트 443을 사용하므로 둘 다 위의 규칙을 준수하지 않습니다.

또한 이 특정한 경우에는 패킷의 대상을 (이 호스트 아님)에서 (이 호스트)로 변경하므로 DNAT가 아닌 REDIRECT를 사용해야 합니다.

이는 HTTP용입니다.

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-ports 555

HTTPS의 경우 SSL/TLS가 활성화된 서비스의 다른 복사본을 설정해야 할 수도 있습니다. 포트 4555에 연결한다고 가정하면 HTTPS 규칙은 다음과 같습니다.

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j REDIRECT --to-ports 4555

...다음 문제는 최신 웹 브라우저가 HTTPS를 통해 Google에 연결할 때 임의의 인증서를 허용하지 않는다는 점일 수 있습니다.

관련 정보