2016-01-26 183 views
1

嗨,大家好,我偶爾是linux用戶,但我有一個項目要做,我需要一些橋接幫助:)
我已經嘗試過谷歌,但沒有解決問題。網絡命名空間和橋接

我的任務是創建網絡命名空間,所以它可以用來執行一些其他任務。

Debian 8.2在Windows 7的VMWare虛擬機中使用。我也在Raspberry Pi 2上嘗試過相同的東西,但也出現了相同的問題。

首先,我按照教程https://lwn.net/Articles/580893/創建了一對虛擬以太網接口。 因此,現在我已經在ip地址10.1.1.2/24全局命名空間veth0,並在netns1命名空間與IP地址10.1.1.1/24 veth1。

接下來,我按照教程http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge橋接eth0和veth0,所以我可以從netns1命名空間訪問Internet。

  • 首先,我已刪除IP地址爲eth0和veth0 接口,使他們做下來的狀態。

  • 創建新網橋(br0),並將兩個接口(eth0和veth0)都添加到該網橋中,即 。

  • 然後兩個接口都設置爲UP狀態,並運行「dhclient br0」至 將ip地址分配給br0。

從全局命名空間現在可以運行「ping google.com」,但是從netns1命名空間我得到錯誤「Network is unreachable」。 (我想有一個與路線的問題,我試圖與加入一些缺省路由netns1命名空間,但沒有運氣。我的網絡知識是溫和的,所以我尋求幫助。)

$ IP地址顯示

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    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 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000 
    link/ether 00:0c:29:45:b6:1d brd ff:ff:ff:ff:ff:ff 
4: veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000 
    link/ether 86:e4:6c:02:b6:79 brd ff:ff:ff:ff:ff:ff 
    inet6 fe80::84e4:6cff:fe02:b679/64 scope link 
     valid_lft forever preferred_lft forever 
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 00:0c:29:45:b6:1d brd ff:ff:ff:ff:ff:ff 
    inet 192.168.178.135/24 brd 192.168.178.255 scope global br0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::20c:29ff:fe45:b61d/64 scope link 
     valid_lft forever preferred_lft forever 

$路線

Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
default   192.168.178.2 0.0.0.0   UG 0  0  0 br0 
default   192.168.178.2 0.0.0.0   UG 1024 0  0 br0 
192.168.178.0 *    255.255.255.0 U  0  0  0 br0 

$ IP netns EXEC netns1 IP地址顯示

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    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 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
3: veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 
    link/ether ee:b8:f3:47:f7:0c brd ff:ff:ff:ff:ff:ff 
    inet 10.1.1.1/24 brd 10.1.1.255 scope global veth1 
     valid_lft forever preferred_lft forever 
    inet6 fe80::ecb8:f3ff:fe47:f70c/64 scope link 
     valid_lft forever preferred_lft forever 

$ IP netns EXEC netns1路線

Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
10.1.1.0  *    255.255.255.0 U  0  0  0 veth1 

$ brctl顯示提前

bridge name bridge id  STP enabled interfaces 
br0  8000.000c2945b61d no  eth0 
          veth0 

感謝您的幫助:)

回答

2

我已經找到了解決方案。

基本上,ip轉發丟失,以及2個更多的步驟(我已經嘗試過,但因爲ip轉發未啓用,它不工作)。

以下步驟未來的讀者(使橋後,在全局命名空間的工作):

  • 分配IP地址,在全局命名空間(10.1.1.2)veth0因爲IP地址 創造了前橋刪除(在他們說的橋樑 教程說:「IP地址需要配置後橋被配置爲 」)
  • 在netns1命名空間中分配默認網關是veth0在全局命名空間「ip netns exec netns1 route add default gw 1​​0.1 .1.2「
  • 啓用ip轉發「echo 1>/proc/sys/net/ipv4/ip_forward」