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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM