我正在使用一个自建的 Vagrant 基础盒,运行 CentOS 7 的最小安装(我按照 Vagrant 的文档创建了它 - 如果您需要更多信息,我在我的网站上的一篇文章中概述了该过程,您可以从这里下载机器)。
在使用 Ansible 配置机器之前(这与该问题无关),我使用以下 Vagrantfile 来启动该框:
Vagrant.configure(2) do |config|
config.vm.box = "relativkreativ/centos-7-minimal"
config.vm.network "public_network", ip: "192.168.0.100", bridge: 'en0: WLAN (AirPort)'
config.vm.provision "file", source: "~/.ssh/id_rsa.pub", destination: "~/id_rsa.pub"
config.vm.provision "shell", inline: <<-END.gsub(/^\s{4}/, '')
mkdir -m 0700 /root/.ssh
mv /home/vagrant/id_rsa.pub /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
chown root:root /root/.ssh/authorized_keys
END
end
这里没有什么特别的,只是添加一个额外的网络接口并复制我的公钥。
当我以 root 用户身份登录到服务器时 ( )ssh [email protected]
有时几秒钟后管道断开,服务器无法 ping 通(有时甚至在运行 Ansible 清单时也是如此)。大多数情况下,我能够在几次尝试后重新连接,但如果无法连接,我必须使用 Vagrant 登录(vagrant ssh
- 这总是有效)并重新启动网络服务(systemctl restart network.service
)。此后,SSH 大部分时间都可以再次工作一段时间。
服务器的路由:
[root@localhost ~]# ip route
default via 10.0.2.2 dev enp0s3
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15
169.254.0.0/16 dev enp0s3 scope link metric 1002
169.254.0.0/16 dev enp0s8 scope link metric 1003
192.168.0.0/24 dev enp0s8 proto kernel scope link src 192.168.0.100
网络接口:
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:c0:9e:5b brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
valid_lft 84324sec preferred_lft 84324sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:b6:45:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.100/24 brd 192.168.0.255 scope global enp0s8
valid_lft forever preferred_lft forever
它们的配置文件:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
HWADDR="08:00:27:C0:9E:5B"
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="957d70e5-1097-4952-b3a4-dc67b919b934"
ONBOOT="yes"
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.100
NETMASK=255.255.255.0
DEVICE=enp0s8
PEERDNS=no
#VAGRANT-END
我禁用了 IPv6 以进行故障排除,但这并没有什么作用。
当我使用我的 CentOS 6 Vagrant 盒子(我以完全相同的方式构建)运行完全相同的工作流程时,以及使用其他人构建的 Vagrant 盒子时,也会发生这种情况。
我正在使用最新版本的 Vagrant (1.7.2) 以及 VirtualBox (4.3.20)。我没有对 VirtualBox 的默认网络配置进行任何更改。
有人知道这是怎么回事吗?我无法追踪这个问题。
多谢!
答案1
对我来说,当我遇到同样的问题时,禁用 NetworkManager 是有效的(但使用仅主机网络)