[Mac] pfを使ってポートフォーワードする (pfctl)

Macにはpfを使ってパケットフィルタすることができます。 WiFiのパケットをVrtualBox上のLinuxやWindowsサーバーに流したりできます。 確認はYosmiteでしていますが、High Sierraでもできると思います。 今回はen1の80ポート宛のパケットを192.168.2.6の8081ポートに流したいと思います。 ## 設定ファイルを作成してポートフォワードする ### アンカーファイルを作成する /etc/pf.anchors/com.hogehoge 下記を記述します。 ```bash `gutter:false; rdr pass on en1 inet proto tcp from any to self port 80 -> 192.168.2.6 port 8081 ``` ### アンカーファイルの書式確認 pfctlコマンドに引数を渡して確認します。 ```bash `gutter:false; $ sudo pfctl -v -n -f /etc/pf.anchors/com.hogehoge ``` ### アンカーファイルをpf.confに追加する /etc/pf.confを編集します。 バックアップを取っておきましょう。 rdr-anchorの下に下記を追記します。 ```bash `gutter:false; rdr-anchor "port80" load anchor "port80" from "/etc/pf.anchors/com.hogehoge" ``` ### pfファイルをロードする ```bash `gutter:false; $ sudo pfctl -ef /etc/pf.conf ``` ## ファイルを作成せずに行う ターミナルで以下を実行します。 ```bash `gutter:false; echo " rdr pass on en1 inet proto tcp from any to self port 80 -> 192.168.2.6 port 8081 " | sudo pfctl -ef - ``` ## VirtualBoxで設定しているブリッジからのアクセスを振り分ける ifconfigでみて見ると以下のようになっています。 ```bash `gutter:false; ... 省略 p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304 ether 02:33:4b:19:bf:d5 media: autoselect status: inactive vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 ether 0a:00:27:00:00:00 inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255 bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=3<RXCSUM,TXCSUM> ether ca:bc:c8:d9:b4:64 inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255 ... 省略 ``` vboxnet0のポート8082にきているものを192.168.2.7のポート8082に流すには, 下記のようにターミナルで打ち込みます ``` `gutter:false; $ echo " rdr pass on vboxnet0 inet proto tcp from any to self port 8082 -> 192.168.2.7 port 8082 nat-anchor "com.apple/*" all nat-anchor "com.apple.internet-sharing" all rdr-anchor "com.apple/*" all rdr-anchor "com.apple.internet-sharing" all pass out quick all " | sudo pfctl -ef - Password: pfctl: Use of -f option, could result in flushing of rules present in the main ruleset added by the system at startup. See /etc/pf.conf for further details. No ALTQ support in kernel ALTQ related functions disabled pfctl: pf already enabled ``` nat-anchor "com.apple/*" all から下は、AppleでEthernet共有をしているときに, 共有先がネットワークに接続できるようにするための設定です。 ## 現在の設定を確認する ### NATルールの確認 pfctl -sn ### フィルタルールの確認 pfctl -sr ## 参考URL (http://www.papercut.com/kb/Main/MacPortForwarding) (http://www.omakase.org/freebsd/freebsd_pf.html)

0 件のコメント :

コメントを投稿