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 件のコメント :
コメントを投稿