VirtualBox雙網卡虛擬機器LinuxNAT不能上網

來源:互聯網
上載者:User

今天開啟VirtualBox的CentOS,發現不能上網了,很奇怪。

基本設定是這樣的:

主機:windows 7 ultimate x64 SP1

VirtualBox: 4.1.8

虛擬機器系統: CentOS 5.7

Virtualbox 上選擇了兩塊網卡,一塊 Host Only ,一塊 NAT。

 

開機後發現外網不能上了,Host Only的內容都是正常的。查看路由如下:

[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.56.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default 192.168.56.1 0.0.0.0 UG 0 0 0 eth1

發現預設的網關跑到 Host Only 上去了,怎麼可能上外網呢。小白一個,但是也知道這樣是不行的,果斷放狗,搜的高端指導若干。

1.雙網卡(關鍵啊關鍵。。。)

註:
linux雙網卡預設路由問題

在安裝第二塊網卡後出現無法上網問題,使用route發現是預設路由出現問題,經過多
發查證,才曉得原來linux在載入網卡設定檔的時候是先載入eth0,再載入eht1的,這樣,如果eth1設定了gateway項,則會覆蓋掉
eth0中的gateway設定,因此解決方案就是刪除eth1的gateway設定,檔案位置在/etc/sysconfig/networking
/devices目錄下,刪除eth1中的gateway設定。
參考: http://hi.baidu.com/%C5%B7%D1%F4%D3%FE%B3%CF/blog/item/974ef71f0c1c4f0a403417cf.html

2.route 命令使用

參見下文。

 

果斷調整,調整 Virtualbox,第一個網卡為 Host Only,第二塊網卡為 NAT。(也可以不動 Virtualbox,直接在Linux把第二塊物理網卡映射為 eth0,把第一區塊對應成 eht1,應該也是可以的。),把Host-Only的固定IP設定到到 eth0 上,重啟網路,輸出路由:

[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 10.0.3.2 0.0.0.0 UG 0 0 0 eth1

看重點,預設IP已經換掉了哇。這樣就可以上外網了啊。。。

【轉】route 的使用:

http://blog.chinaunix.net/space.php?uid=22006903&do=blog&id=149739

linux 路由表維護 (2010-01-25 13:25)分類: linux系統配置查看 Linux 核心路由表

使用下面的 route 命令可以查看 Linux 核心路由表。

# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.0.0     *               255.255.255.0   U     0      0        0 eth0169.254.0.0     *               255.255.0.0     U     0      0        0 eth0default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

route 命令的輸出項說明

輸出項 說明
Destination 目標網段或者主機
Gateway 網關地址,”*” 表示目標是本主機所屬的網路,不需要路由
Genmask 網路遮罩
Flags 標記。一些可能的標記如下:
  U — 路由是活動的
  H — 目標是一個主機
  G — 路由指向網關
  R — 恢複動態路由產生的表項
  D — 由路由的背景程式動態地安裝
  M — 由路由的背景程式修改
  ! — 拒絕路由
Metric 路由距離,到達指定網路所需的中轉數(linux 核心中沒有使用)
Ref 路由項引用次數(linux 核心中沒有使用)
Use 此路由項被路由軟體尋找的次數
Iface 該路由表項對應的輸出介面
3 種路由類型主機路由

主機路由是路由選擇表中指向單個IP地址或主機名稱的路由記錄。主機路由的Flags欄位為H。例如,在下面的樣本中,本地主機通過IP地址192.168.1.1的路由器到達IP地址為10.0.0.10的主機。

Destination    Gateway       Genmask        Flags     Metric    Ref    Use    Iface-----------    -------     -------            -----     ------    ---    ---    -----10.0.0.10     192.168.1.1    255.255.255.255   UH       0    0      0    eth0
網路路由

網路路由是代表主機可以到達的網路。網路路由的Flags欄位為N。例如,在下面的樣本中,本地主機將發送到網路192.19.12的資料包轉寄到IP地址為192.168.1.1的路由器。

Destination    Gateway       Genmask      Flags    Metric    Ref     Use    Iface-----------    -------     -------         -----    -----   ---    ---    -----192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0
預設路由

當主機不能在路由表中尋找到目標主機的IP地址或網路路由時,資料包就被發送到預設路由(預設閘道)上。預設路由的Flags欄位為G。例如,在下面的樣本中,預設路由是IP地址為192.168.1.1的路由器。

Destination    Gateway       Genmask    Flags     Metric    Ref    Use    Iface-----------    -------     ------- -----      ------    ---    ---    -----default       192.168.1.1     0.0.0.0    UG       0        0     0    eth0
配置靜態路由route 命令

設定和查看路由表都可以用 route 命令,設定核心路由表的命令格式是:

# route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

  • add : 添加一條路由規則
  • del : 刪除一條路由規則
  • -net : 目的地址是一個網路
  • -host : 目的地址是一個主機
  • target : 目的網路或主機
  • netmask : 目的地址的網路遮罩
  • gw : 路由資料包通過的網關
  • dev : 為路由指定的網路介面
route 命令使用舉例

添加到主機的路由

# route add -host 192.168.1.2 dev eth0:0# route add -host 10.20.30.148 gw 10.20.30.40

添加到網路的路由

# route add -net 10.20.30.40 netmask 255.255.255.248 eth0# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41# route add -net 192.168.1.0/24 eth1

添加預設路由

# route add default gw 192.168.1.1

刪除路由

# route del -host 192.168.1.2 dev eth0:0# route del -host 10.20.30.148 gw 10.20.30.40# route del -net 10.20.30.40 netmask 255.255.255.248 eth0# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41# route del -net 192.168.1.0/24 eth1# route del default gw 192.168.1.1
設定包轉寄

在 CentOS 中預設的核心配置已經包含了路由功能,但預設並沒有在系統啟動時啟用此功能。開啟 Linux 的路由功能可以通過調整核心的網路參數來實現。要配置和調整核心參數可以使用 sysctl 命令。例如:要開啟 Linux 核心的資料包轉寄功能可以使用如下的命令。

# sysctl -w net.ipv4.ip_forward=1

這樣設定之後,當前系統就能實現包轉寄,但下次啟動電腦時將失效。為了使在下次啟動電腦時仍然有效,需要將下面的行寫入設定檔/etc/sysctl.conf。

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1

使用者還可以使用如下的命令查看當前系統是否支援包轉寄。

# sysctl  net.ipv4.ip_forward

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.