将所有连接的无线客户端的流量路由到一个特定的 IP 和端口

将所有连接的无线客户端的流量路由到一个特定的 IP 和端口

我已使用以下命令在我的服务器上成功设置了接入点wifi-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>:555127.0.0.1:555。 HTTP 使用端口 80,HTTPS 使用端口 443,因此两者都不符合上述规则。

此外,在这种特定情况下,您将需要使用 REDIRECT,而不是 DNAT,因为您要将数据包的目的地从 (not-this-host) 更改为 (this-host)。

这是针对 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 时不会接受任何随机证书。

相关内容