接続されているすべてのワイヤレスクライアントからのトラフィックを特定のIPおよびポートにルーティングします。

接続されているすべてのワイヤレスクライアントからのトラフィックを特定のIPおよびポートにルーティングします。

次のコマンドを使用して、私のサーバーにアクセスポイントを正常に設定しました。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にリダイレクトされているかのように機能する必要があります。

私が正しく理解したら、少なくとも2つの可能な解決策がありますが、実際にどのように機能させることができるかわかりません。

  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>: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

...次の問題は、最新のWebブラウザがHTTPSを介してGoogleに接続したときに任意の証明書を許可しないことです。

おすすめ記事