маршрутизировать трафик всех подключенных беспроводных клиентов к одному конкретному IP-адресу и порту

Я успешно настроил точку доступа на своем сервере с помощью 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

Если я правильно понимаю, для этого есть как минимум два возможных решения, но я не знаю, как заставить это работать на практике:

  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
15.02.2019, 12:08
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.

0
28.01.2020, 05:12

Теги

Похожие вопросы