動作環境
ホストOS: Windows 10 Pro (64bit) Anniversary Update適用済
VMware Workstation v12.5.1
+ linux (CentOS 6.XもしくはUbuntu 14.04など)
を以下に変換するとテストがしやすくなりそう。二台のゲストOSでテストができる。ここで、それぞれのIP上ではWindows 7を使う。
下から上に変換する場合はvmwareでのThe [incomingudp(受信ポートの割当て)] を設定すればいい気がする。
http://griffonworks.net/freebsd/vmware/nat.html
上から下に変換する場合は、思いつく方法の一つはIP1,IP2,IP3に対してゲストOSをそれぞれ用意して、そこから転送する方法。
軽量linuxを立ち上げて、tinyコードを走らせることはできそう。
Pythonコードなど必要かと思ったが、netcatコマンドでもできそう。
http://stackoverflow.com/questions/11350145/are-there-simple-descriptions-on-port-forwarding-using-python
それぞれゲストOSを用意せずとも、もっと簡単に(少メモリ消費で)できる方法もありそうな気はする。
ゲストOS1つに複数のNICを追加して、それぞれの転送をすればいいような気もする。
転送の方法が見つかった
(追記 2017/03/14)
http://qiita.com/7of9/items/e1e6337c49d279b925e0
に記載の通り、socatを使えば転送できそう。
ゲストOS1つに対して以下のようにする。
- 複数のNICを有効にする
- ホストオンリーでいい
- それぞれのNICに対して転送コマンドを実行する
$ sudo socat UDP4-RECVFROM:6000,fork,bindtodevice=eth0 UDP4-SENDTO:192.168.3.141:7000
$ sudo socat UDP4-RECVFROM:6000,fork,bindtodevice=eth1 UDP4-SENDTO:192.168.3.141:7010
$ sudo socat UDP4-RECVFROM:6000,fork,bindtodevice=eth2 UDP4-SENDTO:192.168.3.141:7020