分配IP给OpenVZ容器

我最近给自己买了一台物理服务器,并且正在尝试创build具有IP地址的容器。

物理机器具有IPv4和IPv6地址。 我可以访问另一个IPv4和其他我想分配给容器的IPv6地址。 我设法分配地址如下:

# vzctl set 101 --ipadd 144.76.195.252 --save 

我可以从物理机器ping到机器,但不能从外部世界。 这也适用于我分配的IPv6。

这是物理机器的ifconfig:

 eth0 Link encap:Ethernet HWaddr d4:3d:7e:ec:e0:04 inet addr:144.76.195.232 Bcast:144.76.195.255 Mask:255.255.255.224 inet6 addr: 2a01:4f8:200:71e7::2/64 Scope:Global inet6 addr: fe80::d63d:7eff:feec:e004/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:217895 errors:0 dropped:0 overruns:0 frame:0 TX packets:16779 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:322481419 (307.5 MiB) TX bytes:1672628 (1.5 MiB) venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet6 addr: fe80::1/128 Scope:Link UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:3 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1108 (1.0 KiB) TX bytes:1108 (1.0 KiB) 

这是OpenVZ容器的ifconfig:

 # ifconfig venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.0.2 PtP:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255 inet6 addr: 2a01:4f8:200:71e7::3/64 Scope:Global UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1108 (1.0 KiB) TX bytes:1108 (1.0 KiB) venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:144.76.195.252 PtP:144.76.195.252 Bcast:144.76.195.252 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 

我需要做些什么来让外部的容器可以进入? 我可以忘记什么?

谢谢。

关于路由或桥接的决定不仅仅是技术上的function, 有利有弊,有其select。 如果我只有一个接口,我更喜欢路由,因为这样让我有一个单一的控制点(HN),我可以把一些iptables或额外的保护容器,这是从默认情况下不能从互联网访问。 如果您更喜欢路由,则需要确保net.ipv4.conf.all.forwarding = 1的值(运行命令sysctl -a | grep forward)。 如果不是,则回显1> / proc / sys / net / ipv4 / ip_forward; (但不能在重新启动后存活)或添加该行

 net.ipv4.conf.all.forwarding = 1 

在/etc/sysctl.conf中运行sysctl -P。 通常情况下,一条路由,而不是桥接,因为它允许NAT,这有助于当缺乏IP4地址,但这不是你的情况,你至less有两个。

另一方面,桥接使您的HN和您的VPS相等。 你可以直接在互联网上这样做,因为你似乎有足够的IP地址。 您可能需要对每个容器(例如每个容器和主机上的iptables)进行额外的保护。

要回到你的(路由)问题,如果将ip_forward设置为1没有帮助; 尝试从HN和VPS和tcpdump的arp -an(看看它是否解决在这一点上)以获取更多的细节,当数据包丢失? 在2层或3层?

关于IPv6,我真的不知道:/