linux双网卡上网问题
一、测试环境说明
内存 1G 2核 磁盘 50G 网卡1 仅主机(Host-Only)网络 宿主通信 网卡2 NAT 上网 系统 CentOS-7-x86_64-Minimal-1804 虚拟硬盘文件类型 VDI 动态分配 USB控制器 不启用 声音 不启用
root密码 root123
(1)软件工具:
vbox(5.2.20 r125813), Centos7(CentOS-7-x86_64-Minimal-1804)
(2)装机时网络设置:
(3)虚机机配置文件
cat /etc/sysconfig/network-scripts/ifcfg-eth0 #内网网卡,用于虚拟机与宿主机互ping
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #如果需要大量虚拟机,建议用dhcp
DEFROUTE=yes #默认路由应该设置为no,因为它仅用于ssh登录
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes #目前无所谓,ipv6暂时用不到
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=216480ee-d55a-4b50-a56b-7a9d2870f568 #建议删除,方便以后复制虚拟机
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.56.99 #这里的ip设置仅供参考;如果需要大量虚拟机,建议删除
PREFIX=24 #如果需要大量虚拟机,建议删除
GATEWAY=192.168.56.2 # 建议删除
IPV6_PRIVACY=no
cat /etc/sysconfig/network-scripts/ifcfg-eth1 #外网网卡,用于上网
TYPE=”Ethernet”
PROXY_METHOD=”none”
BROWSER_ONLY=”no”
BOOTPROTO=”dhcp” #一定要用dhcp以适应外部网络变化
DEFROUTE=”yes” #默认路由设为yes, 用于访问外网
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”eth1″
UUID=”dcc0c6bc-9918-472c-b4fe-44d12ca96998″ # 建议删除
DEVICE=”eth1″
ONBOOT=”yes”
二、实践–成功ping通外网+与宿主机互ping
(1) 现象1:
安装虚拟机成功后,reboot;可以ping通过www.baidu.com,但网卡eth0处于onboot=no状态。估计时vbox的bug。
(2)现象2:
修改配置文件ifcfg-eth0,将ONBOOT设置为yes。然后执行service network restart——此时虚拟机可以和宿主机互ping,但不能联外网
ip route # default via 192.168.56.2 dev eth0 # default via 10.0.3.2 dev eth1 proto dhcp metric 100 # 10.0.3.0/24 dev eth1 proto kernel scope link src 10.0.3.15 metric 100 # 192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.99 ping www.baidu.com # ping: www.baidu.com: Name or service not known
(3)现象3:
进入虚拟机,执行”ip link set eth0 down”——可以联外网。然后,执行”ip link set eth0 up”——可以联外网也可以与宿主机互ping。
(”ip route”–>”ip link set eth0 down”—>”ip route”–>”ping www.baidu.com”–>”ip link set eth0 up”—>”ip route”–>”ping www.baidu.com”, 中间的ping好像不能省)
自己当时的猜想
我记录下可以上网的配置,发现NAT网卡(即实例中的10.0.3.0/24)只有出现在ip route输出结果的第一行时,能上网,也能和宿主机互ping;Host-Only网卡(即示例中的192.168.56.0/24)出现在第一行时,不能上网,只能和宿主机互ping。
相关”ip route”结果如下:
———————————————————————————-
# 不能上网
default via 192.168.56.2 dev eth0 proto static metric 100
default via 10.0.3.2 dev eth1 proto dhcp metric 101
10.0.3.0/24 dev eth1 proto kernel scope link src 10.0.3.15 metric 101
192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.99 metric 100
———————————————————————————-
# 可以上网
default via 10.0.3.2 dev eth1 proto dhcp metric 101
default via 192.168.56.2 dev eth0 proto static metric 102
10.0.3.0/24 dev eth1 proto kernel scope link src 10.0.3.15 metric 101
192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.99 metric 102
———————————————————————————-
# 可以上网, 其他的一台可以上网的虚拟机
default via 10.0.2.2 dev eth1
default via 192.168.56.2 dev eth0 proto static metric 100
10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.15
10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.15 metric 101
192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.11 metric 100
——————————————————————————–
四、暂时解决的方法
(参考:https://blog.csdn.net/tksnail/article/details/60865812)
关掉内网网卡的网关。编辑/etc/sysconfig/network-scripts/ifcfg-eth0,删除GATWAY所在的那一行,重启(网络)
ip route # default via 10.0.3.2 dev eth1 proto dhcp metric 101 # 10.0.3.0/24 dev eth1 proto kernel scope link src 10.0.3.15 metric 101 # 192.168.56.0/24 dev eth0 proto kernel scope link src 192.168.56.99 metric 100
注:这种方法有后遗症,因为eth0和eth1的DEFROUTE都是yes。
#查看路由 ip route #默认路由1(eth1网卡) default via 10.0.3.2 dev eth1 proto dhcp metric 101 #默认路由2(eth0网卡) default via 192.168.56.2 dev eth0 proto static metric 102
执行“ip route”查看结果。
当第一行是“eth1网卡”时,可以上网;
当第一行是“eth0网时”不能上网。
五、 彻底解决的方法–后续
注: 关闭eth1的默认路由DEFROUTE=no, 然后重启网络即可,配置如下
(1)ifcfg-eth0
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=no IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth0 DEVICE=eth0 ONBOOT=yes
(2)ifcfg-eth1
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" 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="eth1" DEVICE="eth1" ONBOOT="yes"
然后重启网络
service network restart
2018-11-02 15:17:45