2016-01-26 68 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”