VirtualBoxでNATに設定したインターフェースが疎通できずに困った

VirtualBoxでNATに設定したインターフェースが疎通できないために外部に通信できなかった

VirtualBoxで新規にCentOS7の仮想マシンを作成した後、これまでに何度も同じ構成で作成していたため、特に引っ掛かる意識もなくyum updateを実行しましたが、timeoutで接続できない事象に遭遇しました。

[root@centos7-102 ~]# yum update
読み込んだプラグイン:fastestmirror
http://ftp.iij.ad.jp/pub/linux/centos/7.4.1708/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://ftp.iij.ad.jp/pub/linux/centos/7.4.1708/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
他のミラーを試します。
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.4.1708/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.4.1708/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30002 milliseconds')
他のミラーを試します。
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.4.1708/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.4.1708/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30002 milliseconds')
他のミラーを試します。
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.4.1708/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.4.1708/os/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
他のミラーを試します。

****以下は同じことが続くので略****

VirtualBoxのネットワーク設定

VirtualBoxのネットワーク設定は次のようにしてあります。
すべてのアダプターはネットワークアダプターを有効化にチェックをONにしています。

  • アダプター1:NAT:enp0s3:DHCP
  • アダプター2:ホストオンリーアダプター:enp0s8:STATIC
  • アダプター3:NATネットワーク:enp0s9:STATIC

ネットワークの状態を確認してみます。

NATに設定したenp0s3以外は通信ができていて、ホストオンリーアダプターenp0s8もSSHで接続ができ、NATネットワークenp0s9も同じセグメント内にいる他のPCと通信ができていました。

ip a

インターフェースの状態を確認してみます。
NATで設定したインターフェースenp0s3はUPになっています。

# ip a
1: lo:  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:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ba:85:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86357sec preferred_lft 86357sec
    inet6 fe80::a00:27ff:feba:85c5/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6a:06:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::bc51:22cb:ee58:49ae/64 scope link
       valid_lft forever preferred_lft forever
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:45:38:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.102/24 brd 192.168.1.255 scope global enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::651c:b1f8:6daa:a65/64 scope link
       valid_lft forever preferred_lft forever

ゲートウェイにpingを打ってみます

当然、pingは通りません。

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
^C
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2000ms

ip r

# ip r
default via 192.168.1.1 dev enp0s9 proto static metric 100
default via 10.0.2.2 dev enp0s3 proto static metric 101
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
192.168.1.0/24 dev enp0s9 proto kernel scope link src 192.168.1.102 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 100

ip -s l

インターフェースの通信状態を確認してみます。

# ip -s l
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    5752       72       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    5752       72       0       0       0       0
2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 08:00:27:ba:85:c5 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    590        1        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    990        9        0       0       0       0
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 08:00:27:6a:06:af brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    22243      206      0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    36151      219      0       0       0       0
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 08:00:27:45:38:eb brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    720        12       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    9734       123      0       0       0       0

ip n

    
# ip n
192.168.56.1 dev enp0s8 lladdr 0a:00:27:00:00:15 REACHABLE
192.168.1.1 dev enp0s9 lladdr 52:54:00:12:35:00 REACHABLE

ネットワークを再起動してみます

# systemctl restart network

ネットワーク再起動後

ネットワークの再起動後に、ネットワーク状態を確認してみます。

# ip a
1: lo:  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:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ba:85:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86396sec preferred_lft 86396sec
    inet6 fe80::a00:27ff:feba:85c5/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6a:06:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::bc51:22cb:ee58:49ae/64 scope link
       valid_lft forever preferred_lft forever
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:45:38:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.102/24 brd 192.168.1.255 scope global enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::651c:b1f8:6daa:a65/64 scope link
       valid_lft forever preferred_lft forever
       
# ip r
default via 10.0.2.2 dev enp0s3 proto static metric 100
default via 192.168.1.1 dev enp0s9 proto static metric 101
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
192.168.1.0/24 dev enp0s9 proto kernel scope link src 192.168.1.102 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 100

# ip n
192.168.56.1 dev enp0s8 lladdr 0a:00:27:00:00:15 REACHABLE
10.0.2.2 dev enp0s3 lladdr 52:54:00:12:35:02 REACHABLE

# ip -s l
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    5752       72       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    5752       72       0       0       0       0
2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 08:00:27:ba:85:c5 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    3508       31       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    4308       47       0       0       0       0
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 08:00:27:6a:06:af brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    35743      335      0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    58719      358      0       0       0       0
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 08:00:27:45:38:eb brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    780        13       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    11072      141      0       0       0       0

10.0.2.2がREACHABLEになったこと、インターフェースが通信していそうなのでゲートウェイにpingを打ってみます。

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.102: icmp_seq=1 ttl=63 time=8.85 ms
64 bytes from 192.168.0.102: icmp_seq=2 ttl=63 time=12.1 ms
^C
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 8.856/10.526/12.196/1.670 ms

何が問題だったのか判りませんが、pingが通って疎通できていることを確認しました。
やれやれ。と思って仮想マシンを再起動してみました。すると、インターフェースenp0s3が疎通できていない状態に逆戻り、当然、ネットワークを再起動すれば疎通できない問題は解消するという状況でした。根本の設定をどこかで間違ったようです。
でも、これまでも同じ設定で使ってきたのに・・・

ネットワーク設定を再確認してみます

インターフェースenp0s3以外のインターフェースは正常に通信できていること、ネットワークを再起動すると通信できるようになることから、VirtualBox自体の問題ではなく、CentOSの設定に問題があると考えました。

そこで気になったのが、この辺りです。

# ip n
192.168.56.1 dev enp0s8 lladdr 0a:00:27:00:00:15 REACHABLE
192.168.1.1 dev enp0s9 lladdr 52:54:00:12:35:00 REACHABLE

# ip r
default via 192.168.1.1 dev enp0s9 proto static metric 100
default via 10.0.2.2 dev enp0s3 proto static metric 101
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
192.168.1.0/24 dev enp0s9 proto kernel scope link src 192.168.1.102 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 100

あれ?NATネットワークに指定しているインターフェースifcfg-enp0s9で指定した記憶がない192.168.1.1というゲートウェイがリストされています。

enp0s9の設定を確認してみます

# cat /etc/sysconfig/network-scripts/ifcfg-enp0s9
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s9
UUID=5bb97093-fda5-4209-9bc4-ffbf6497101e
DEVICE=enp0s9
ONBOOT=yes
IPADDR=192.168.1.102
PREFIX=24
GATEWAY=192.168.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

あれ?GATEWAYが登録されています。GATEWAYをコメントアウトしてみます。

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s9


TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s9
UUID=5bb97093-fda5-4209-9bc4-ffbf6497101e
DEVICE=enp0s9
ONBOOT=yes
IPADDR=192.168.1.102
PREFIX=24
#GATEWAY=192.168.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

仮想マシンを再起動してみます。

再起動後の状態

# ip r
default via 10.0.2.2 dev enp0s3 proto static metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
192.168.1.0/24 dev enp0s9 proto kernel scope link src 192.168.1.102 metric 100
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.102 metric 100

# ip n
10.0.2.2 dev enp0s3 lladdr 52:54:00:12:35:02 STALE
192.168.56.1 dev enp0s8 lladdr 0a:00:27:00:00:15 REACHABLE

# ip a
1: lo:  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:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ba:85:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86329sec preferred_lft 86329sec
    inet6 fe80::a00:27ff:feba:85c5/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6a:06:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.102/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::bc51:22cb:ee58:49ae/64 scope link
       valid_lft forever preferred_lft forever
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:45:38:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.102/24 brd 192.168.1.255 scope global enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::651c:b1f8:6daa:a65/64 scope link
       valid_lft forever preferred_lft forever
       
# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=8.92 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=12.1 ms
^C
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 8.925/10.562/12.199/1.637 ms

とりあえず再起動しても外部に通信できるようになりました。結果は自分のインストール時のミスでした。