다음 명령을 사용하여 내 서버에 액세스 포인트를 성공적으로 설정했습니다.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에 연결할 때 임의의 인증서를 허용하지 않는다는 점일 수 있습니다.