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

转载于:https://www.cnblogs.com/dobbin2018/p/9896261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值