Я успешно настроил точку доступа на своем сервере с помощью wifi-ap snap
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
Если я правильно понимаю, для этого есть как минимум два возможных решения, но я не знаю, как заставить это работать на практике:
Я пытался следовать
$ 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
, но это не дало никакого эффекта:
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
... и ваша следующая проблема может заключаться в том, что современные веб-браузеры не будут принимать любой случайный сертификат, когда они должны подключаться к Google через HTTPS.