OS Debian GNU/Linux 7.6 (wheezy).
К сожалению у меня не получается получить интернет внутри контейнера при использования veth.
Если я использую venet то все работает хорошо.
Теперь немного о том как устроена сеть.
vlan9 - ISP
vlan10 - сеть между роутером и коммутатором L2+
vlan11 - сеть с ПК.
Есть коммутатор L2+ на который приходит интернет по vlan9.
Vlan 10 это сеть до роутера который делает NAT vlan9 обычным маскарадом -A POSTROUTING -o bond0.9 -j MASQUERADE .
На роутере сделано объединение интерфейсов (LACP) с коммутатора L2+ по стандарту 802.3ad.
vlan11 это обычная сетка, маршрутизацией для нее занимается коммутатор L2+ .
Конфиг роутера.
#bonding
auto bond0
iface bond0 inet manual
bond-mode 802.3ad
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond-lacp-rate 4
bond-slaves eth0 eth1
#vlan 9
auto bond0.9
iface bond0.9 inet dhcp
hwaddress ether 00:00:0C:97:BA:B8
vlan_raw_device bond0
#vlan 10
auto bond0.10
iface bond0.10 inet static
address 10.14.248.1
netmask 255.255.255.252
up route add -net 10.14.249.0/24 gw 10.14.248.2
down route del -net 10.14.249.0/24 gw 10.14.248.2
vlan_raw_device bond0
#vlan 11
auto bond0.11
iface bond0.11 inet manual
vlan_raw_device bond0
#bridge vlan11 for VM
auto vmbrd0v11
iface vmbrd0v11 inet manual
bridge_ports bond0.11
bridge_stp on
bridge_fd 0
Роутинг
10.14.248.0/30 dev bond0.10 proto kernel scope link src 10.14.248.1
xxx.xxx.xxx.128/25 dev bond0.9 proto kernel scope link src xxx.xxx.xxx.236
10.14.249.0/24 via 10.14.248.2 dev bond0.10
default via xxx.xxx.xxx.129 dev bond0.9
Коммутатор L2 имеет ip 10.14.248.2
Проблема заключается вот в чем. Я поднимаю на роутере контейнер с виртуальной машиной, которая будет частью сети vlan11. Для этого я на роутере поднял vlan11 (bond0.11) и bridge (vmbrd0v11).
Сеть контейнеру даю так vzctl set CTID --netif_add eth0,,,,vmbrd0v11 --save
veth1234.0 добавлен в мост vmbrd0v11
bridge name bridge id STP enabled interfaces
vmbrd0v11 8000.0018518d937b yes bond0.11
veth1234.0
Контейнер получает по DHCP
eth0: mtu 1500 qdisc noqueue state UNKNOWN
link/ether 00:18:51:ed:5c:10 brd ff:ff:ff:ff:ff:ff
inet 10.14.249.111/24 brd 10.14.249.255 scope global eth0
inet6 fe80::218:51ff:feed:5c10/64 scope link
valid_lft forever preferred_lft forever
роутинг
10.14.249.0/24 dev eth0 proto kernel scope link src 10.14.249.111
default via 10.14.249.1 dev eth0
В итоге контейнер видит всю сеть, но не может выйти в интернет.
Пинги попадают на интерфейс bond0.9
IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
10.14.249.111 > 8.8.8.8: ICMP echo request, id 2001, seq 1, length 64
но не доходят (смотрел на своих удаленных серверах)
sysctl добавил
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# We do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
Честно говоря у меня нет мыслей куда копать и что трогать.