![연결된 모든 무선 클라이언트의 트래픽을 특정 IP 및 포트로 라우팅합니다.](https://linux55.com/image/148192/%EC%97%B0%EA%B2%B0%EB%90%9C%20%EB%AA%A8%EB%93%A0%20%EB%AC%B4%EC%84%A0%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%9D%98%20%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84%20%ED%8A%B9%EC%A0%95%20IP%20%EB%B0%8F%20%ED%8F%AC%ED%8A%B8%EB%A1%9C%20%EB%9D%BC%EC%9A%B0%ED%8C%85%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음 명령을 사용하여 내 서버에 액세스 포인트를 성공적으로 설정했습니다.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로 리디렉션되는 것처럼 작동해야 합니다.
내가 올바르게 이해했다면 적어도 두 가지 가능한 해결책이 있지만 실제로 어떻게 작동하게 할 수 있는지 모르겠습니다.
- dnsmasq + nginx - 이전에 이 작업을 해본 적이 없어서 너무 복잡해 보이고 현재 DNS가 중단되지 않을지 모르겠습니다.
- 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
그러나 효과가 없습니다.
- 구글을 열어보세요 -https://google.com
- Whatsmyip 열기 -http://www.whatsmyip.org/
- 웹사이트에 접속할 수 없습니다 -https:// 페이지가 존재하지 않습니다
- 웹사이트에 접속할 수 없습니다 -http://존재하지 않는 페이지
답변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에 연결할 때 임의의 인증서를 허용하지 않는다는 점일 수 있습니다.