Edited at

VirtualBoxでポートフォワーディングの設定をコマンドラインから追加、削除、表示

More than 5 years have passed since last update.


ポートフォワーディングの追加

OSX上のdockerでCentOS 6.5にnginxを公式レポジトリからインストールするサンプル - Qiitaにも書きましたが、ポートフォワーディングの追加は以下のようにします。

VBoxManage controlvm "boot2docker-vm" natpf1 "nginx,tcp,127.0.0.1,8080,,80"

この例ではlocalhostの8080番ポートをboot2docker-vmの80番ポートにフォワーディングします。


ポートフォワーディングの削除

削除するには追加した時の名前を指定してdeleteします。

参考: VBoxManage controlvmのマニュアル

VBoxManage controlvm "boot2docker-vm" natpf1 delete nginx


ポートフォワーディングの変更

すでに登録済みの名前を再度追加しようとすると

VBoxManage: error: A NAT rule of this name already exists

というエラーが出ます。

ということで、変更するには一旦削除してから追加します。


ポートフォワーディングの確認

VBoxManage showvminfo boot2docker-vm | grep '^NIC'

以下の様な出力が出ます。

NIC 1:           MAC: 080027AB2BD4, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: virtio, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none

NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 1 Rule(0): name = docker, protocol = tcp, host ip = 127.0.0.1, host port = 4243, guest ip = , guest port = 4243
NIC 1 Rule(1): name = nginx, protocol = tcp, host ip = 127.0.0.1, host port = 8080, guest ip = , guest port = 80
NIC 1 Rule(2): name = redis, protocol = tcp, host ip = 127.0.0.1, host port = 16379, guest ip = , guest port = 6379
NIC 1 Rule(3): name = ssh, protocol = tcp, host ip = 127.0.0.1, host port = 2022, guest ip = , guest port = 22
NIC 2: MAC: 0800270F0BE8, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 3: disabled
NIC 4: disabled
NIC 5: disabled
NIC 6: disabled
NIC 7: disabled
NIC 8: disabled