仮想OSのNICをブリッジに接続する
前置き
仮想マシンがVirtualBoxのNATを使って外部に通信する場合、仮想マシン側のIPアドレスはNATで変換されるため外部ネットワークから参照することが出来ません。 仮想マシンをリアルネットワークに配置する場合はこの問題をクリアする必要があります。
様々な手段が考えられますが今回はLayer2の通信を転送できるブリッジを使用します。
以下の図では192.168.0.200
192.168.0.3
192.168.0.1
がお互いに通信できる状態になっています。VirtualBox Bridegeは内部的に物理マシンのNICに紐づけられ、そこに接続されているLANケーブルを経由して外部に通信します。
目的
仮想マシンのNICをVirtualBoxのブリッジに接続し、VirtualBoxが動作している物理マシンのNICを通じて他の物理マシンにpingを送信します。
手順
物理マシンのNICを確認します。以下の例ではRealtek PCIe GBE Family Co...
というNICが外界と接続できる状態です。
VirtualBoxのネットワーク設定でアダプター2(enp0s8に対応)の割り当てをブリッジアダプター
に変更します。
先ほど確認したNICと名前が一致している事を確認してください。
起動した仮想マシンにsshでログインしてenp0s8のIPアドレスを変更します。
enp0s8のIPアドレスを192.168.0.200に変更する
# nmcli connect modify enp0s8 ipv4.address 192.168.0.200/24
# nmcli connect down enp0s8
# nmcli connect up enp0s8
enp0s8のIPアドレスが192.168.0.200に変わったことを確認する
# ip -4 address
この状態で192.168.0.1
にpingを送ります。
ブリッジは物理マシンのNICに紐づいているため物理マシン側のWiresharkでキャプチャすることが可能です。
enp0s8のIPアドレスである192.168.0.200
からパケットが送られている事が分かります。
NAT(enp0s3)も引き続き有効なのでenp0s8を無効化してパケットの状態が変化することを確認してください。
ブリッジを経由して192.168.0.1に疎通確認のためのpingを送信する
# ping 192.168.0.1
ブリッジに接続しているenp0s8を無効化する
# nmcli connection down enp0s8
NATを経由して192.168.0.1に疎通確認のためのpingを送信する
# ping 192.168.0.1
まとめ
- NATはIPアドレスを変換する
- ブリッジはLayer2で動作するのでIPアドレスを変換しない
- ブリッジを使って他の機器からのパケットを受け取ることが出来る