pf: ポート 80 のすべてのパケットを任意のインターフェースから SOCKS プロキシに転送する

pf: ポート 80 のすべてのパケットを任意のインターフェースから SOCKS プロキシに転送する

私はポート80上のパケットを任意のインターフェースからSOCKSプロキシに転送しようとしています(サーバ)。正しく設定されているかどうかわかりませんが、パケットを転送できません。

次のようにSOCKSプロキシを作成しますマシンA:

ssh -D 5948 user@server

これにより、Chrome でプロキシ設定を変更すると、SOCKS プロキシ経由でインターネットにアクセスできるようになります。

これは問題ありませんが、デバイスを接続すると(デバイスB) にマシンABluetooth を使用して、そのデバイスから自分のマシンを経由して SOCKS プロキシ経由でインターネットにアクセスしたいと考えています。

           +---------------+    +---------------+    +--------------+
           |               |    |               |    |              |
           |               |    |               |    |              |
Internet   |    Server     <----+   Machine A   <----+   Device B   |
           |               |    |               |    |              |
           |               |    |               |    |              |
           +---------------+    +---------------+    +--------------+
                                                  Connected via Bluetooth

Bluetooth 経由の接続とインターネット共有は正常に動作していますが、SOCKS プロキシではなく ISP を使用しています。

代わりに、pfポート 80 の任意のインターフェースからのパケットを SOCKS プロキシに転送するために を使用します。

私は次の内容のアンカー ファイルを作成してこれを試しました。

rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 5948

次のようにアンカーを追加しpf.conf、すべてのインターフェースで転送を有効にします。

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

転送が行われていないので、ルールが間違っているとしか思えませんpf。以下を使用して検証しました。

sudo pfctl -vnf /etc/pf.anchors/org.jj.forwarding

どこが間違っているのか、何か考えはありますか?

答え1

転送を有効にしているので、次のiptableルールを追加すると動作するはずです。

iptables -t nat -A PREROUTING -i bl1 -p tcp --dport 80 -j DNAT --to 127.0.0.1:5948

bl1はBluetoothインターフェースです

関連情報