MacのVirtualBoxに作ったゲストOSにブリッジアダプターを設定する
MacのVirtualBoxに作ったゲストOSへホストOSから接続できるようにしたので、他のPCからもアクセスできるようにします。
ponsuke-tarou.hatenablog.com
- 目的 : Linux環境でSSHの鍵作成から設定まで勉強したい!
- 環境
- ホストOS : macOS Sierra Version10.12.4
- VirtualBox : Version 5.1.22 r115126 (Qt5.6.2)
- ゲストOSへ接続したいOS : Windows10
これまで設定してきたNAT + ホストオンリーアダプターで、
- ゲストOSでインターネットに接続できる
- ホストOSからゲストOSに接続できる
という状態でした。
しかし、これではホストOSではない「ローカルネットワーク*1にあるPC」からの接続はできません。
そこで、ネットワークをブリッジアダプターにして「ローカルネットワーク」内にあたかもゲストOSが他のPCのように接続している状態を作り、「ローカルネットワークにあるPC」からの接続を試みます。
■ブリッジアダプター
・ゲストOSがホストOSのネットワーク設定をブリッジしてホストOSのネットワークを使用する
(ゲストOSがホストOSと同一のネットワークに存在するかのように動作する)
・ホストOSからゲストOSへの接続可能
・インターネットの相互間通信可能(外部ネットワークと直接つながる)
・ゲストOSも物理的にIPアドレスを利用する(ホストOSのネットワークからゲストOSが見える)
・VirtualBoxのブリッジは少々動作が不安定なので注意が必要
・柔軟性が高いがセキュリティの脅威にさらされやすい
Virtual Boxのネットワーク設定 - ぐ~だらびより。
ブリッジアダプタを設定します。
ゲストOSを起動して状態を確認します。
$ ssh mana@192.168.56.202 $ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:67:e7:fc brd ff:ff:ff:ff:ff:ff inet 192.168.0.9/24 brd 192.168.0.255 scope global dynamic enp0s3 valid_lft 86398sec preferred_lft 86398sec inet6 2408:210:9080:4000:a00:27ff:fe67:e7fc/64 scope global mngtmpaddr dynamic valid_lft 2591936sec preferred_lft 604736sec inet6 fe80::a00:27ff:fe67:e7fc/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ce:e2:cd brd ff:ff:ff:ff:ff:ff inet 192.168.56.202/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:e2cd/64 scope link valid_lft forever preferred_lft forever $ nmcli c 名前 UUID タイプ デバイス enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8 $ nmcli d デバイス タイプ 状態 接続 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み enp0s8 lo loopback 管理無し --
ブリッジアダプター用のConnectionを作成します。
# Connectionを追加します。 $ sudo nmcli c add type bridge ifname br0 接続 'bridge-br0' (b720a4bd-2dd8-462d-b17d-8967805d64c4) が正常に追加されました。 $ nmcli c 名前 UUID タイプ デバイス bridge-br0 b720a4bd-2dd8-462d-b17d-8967805d64c4 bridge br0 enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8 $ nmcli d デバイス タイプ 状態 接続 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み enp0s8 br0 bridge 接続中(IP 設定を取得中) bridge-br0 lo loopback 管理無し --
ifnameでインターフェースを指定した場合
/etc/sysconfig/network-scripts/ifcfg-bridge-
のファイルが作成される。
DEVICEのエントリ: ifnameの値
NAMEのエントリ: bridge-になる。
STP=yesになる
nmcliでブリッジインターフェースを作成する2 · GitHub
追加したブリッジアダプター用のConnectionを設定します。
# STPを止めます。 $ sudo nmcli c modify bridge-br0 stp no # IPv6は使わない設定にします。 $ sudo nmcli c modify bridge-br0 ipv6.method ignore # IPv4を固定のIPアドレスにします。 $ sudo nmcli c modify bridge-br0 ipv4.method manual ipv4.addresses '192.168.0.6/24' ipv4.gateway '192.168.0.1' ipv4.dns '8.8.8.8' # NetworkManagerを再起動します。 $ sudo systemctl restart NetworkManager # 状態を確認します。 $ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:67:e7:fc brd ff:ff:ff:ff:ff:ff inet 192.168.0.9/24 brd 192.168.0.255 scope global dynamic enp0s3 valid_lft 86393sec preferred_lft 86393sec inet6 2408:210:9080:4000:a00:27ff:fe67:e7fc/64 scope global mngtmpaddr dynamic valid_lft 2591618sec preferred_lft 604418sec inet6 fe80::a00:27ff:fe67:e7fc/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ce:e2:cd brd ff:ff:ff:ff:ff:ff inet 192.168.56.202/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:e2cd/64 scope link valid_lft forever preferred_lft forever 4: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 02:ca:2b:d2:32:7d brd ff:ff:ff:ff:ff:ff inet 192.168.0.6/24 brd 192.168.0.255 scope global br0 valid_lft forever preferred_lft forever $ nmcli c 名前 UUID タイプ デバイス bridge-br0 b720a4bd-2dd8-462d-b17d-8967805d64c4 bridge br0 enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8 $ nmcli d デバイス タイプ 状態 接続 br0 bridge 接続済み bridge-br0 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み enp0s8 lo loopback 管理無し -- $ sudo cat /etc/sysconfig/network-scripts/ifcfg-bridge-br0 DEVICE=br0 STP=no TYPE=Bridge PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bridge-br0 UUID=b720a4bd-2dd8-462d-b17d-8967805d64c4 ONBOOT=yes IPADDR=192.168.0.6 PREFIX=24 GATEWAY=192.168.0.1 DNS1=8.8.8.8
IPADDRには、ゲストPCに固定で割り当てたいIPアドレスを指定します。ホストPCやLAN上の他のPCとは異なる値を設定してください。<省略>
BOOTPROTOはnoneにすることで動的なIPアドレス割り当てがされないようになります。
ja.stackoverflow.com
デバイスにはそれぞれ独自の設定ファイルがあるため、管理者は、各インターフェースがどう機能するか個別に制御できます。
9.2. インターフェース設定ファイル
奴隷を作ります。
# 奴隷用のConnectionを作成します。 $ sudo nmcli c add type bridge-slave ifname enp0s3 master bridge-br0 接続 'bridge-slave-enp0s3' (f3a0186b-e1ea-439d-84a8-5589863feb91) が正常に追加されました。 # NetworkManagerを再起動します。 $ sudo systemctl restart NetworkManager # 状態を確認します。 $ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:67:e7:fc brd ff:ff:ff:ff:ff:ff inet 192.168.0.9/24 brd 192.168.0.255 scope global dynamic enp0s3 valid_lft 86396sec preferred_lft 86396sec inet6 2408:210:9080:4000:a00:27ff:fe67:e7fc/64 scope global mngtmpaddr dynamic valid_lft 2591879sec preferred_lft 604679sec inet6 fe80::a00:27ff:fe67:e7fc/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ce:e2:cd brd ff:ff:ff:ff:ff:ff inet 192.168.56.202/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:e2cd/64 scope link valid_lft forever preferred_lft forever 4: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 02:ca:2b:d2:32:7d brd ff:ff:ff:ff:ff:ff inet 192.168.0.6/24 brd 192.168.0.255 scope global br0 valid_lft forever preferred_lft forever $ nmcli c 名前 UUID タイプ デバイス bridge-br0 b720a4bd-2dd8-462d-b17d-8967805d64c4 bridge br0 enp0s3 862d8f79-a10c-35d8-8b38-6d982fca83ce 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8 bridge-slave-enp0s3 f3a0186b-e1ea-439d-84a8-5589863feb91 802-3-ethernet -- $ nmcli d デバイス タイプ 状態 接続 br0 bridge 接続済み bridge-br0 enp0s3 ethernet 接続済み enp0s3 enp0s8 ethernet 接続済み enp0s8 lo loopback 管理無し -- # 不要となった既存のConnectionを削除します。 $ sudo nmcli c del enp0s3 接続 'enp0s3' (862d8f79-a10c-35d8-8b38-6d982fca83ce) が正常に削除されました。 # NetworkManagerを再起動します。 $ sudo systemctl restart NetworkManager # ここでうまく設定が反映されない場合はゲストOSを再起動します。 # 状態を確認します。 $ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000 link/ether 08:00:27:67:e7:fc brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:ce:e2:cd brd ff:ff:ff:ff:ff:ff inet 192.168.56.202/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fece:e2cd/64 scope link valid_lft forever preferred_lft forever 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 08:00:27:67:e7:fc brd ff:ff:ff:ff:ff:ff inet 192.168.0.6/24 brd 192.168.0.255 scope global br0 valid_lft forever preferred_lft forever inet6 2408:210:9080:4000:a00:27ff:fe67:e7fc/64 scope global mngtmpaddr dynamic valid_lft 2591972sec preferred_lft 604772sec inet6 fe80::a00:27ff:fe67:e7fc/64 scope link valid_lft forever preferred_lft forever $ nmcli c 名前 UUID タイプ デバイス bridge-br0 b720a4bd-2dd8-462d-b17d-8967805d64c4 bridge br0 bridge-slave-enp0s3 f3a0186b-e1ea-439d-84a8-5589863feb91 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8 $ nmcli d デバイス タイプ 状態 接続 br0 bridge 接続済み bridge-br0 enp0s3 ethernet 接続済み bridge-slave-enp0s3 enp0s8 ethernet 接続済み enp0s8 lo loopback 管理無し --
こちらを参考にさせて頂きました。
qiita.com
ホストOSからブリッジアダプターのIPアドレスで接続してみます。
$ ssh mana@192.168.0.6 mana@192.168.0.6s password: Last login: Tue Oct 24 01:46:41 2017 from 192.168.56.1 $ nmcli c 名前 UUID タイプ デバイス bridge-br0 b720a4bd-2dd8-462d-b17d-8967805d64c4 bridge br0 bridge-slave-enp0s3 f3a0186b-e1ea-439d-84a8-5589863feb91 802-3-ethernet enp0s3 enp0s8 0cf4cb12-cd52-463e-91eb-5990197860b6 802-3-ethernet enp0s8
接続できました。
ローカルネットワークにあるWindows10からpingで確認してみます。
ping 192.168.0.6 192.168.0.6 に ping を送信しています 32 バイトのデータ: 192.168.0.6 からの応答: バイト数 =32 時間 =94ms TTL=64 192.168.0.6 からの応答: バイト数 =32 時間 =100ms TTL=64 192.168.0.6 からの応答: バイト数 =32 時間 =19ms TTL=64 192.168.0.6 からの応答: バイト数 =32 時間 =34ms TTL=64 192.168.0.6 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 19ms、最大 = 100ms、平均 = 61ms
つながりました。
*1:今回は、「お家で使っているLANにつながっている」ということです。