Задать вопрос
icCE
@icCE
youtube.com/channel/UC66N_jRyZiotlmV95QPBZfA

Как внутри контейнера OpenVZ получить интернет?

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

Честно говоря у меня нет мыслей куда копать и что трогать.
  • Вопрос задан
  • 2830 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
icCE
@icCE Автор вопроса
youtube.com/channel/UC66N_jRyZiotlmV95QPBZfA
надо в sysctl net.bridge.bridge-nf-call-iptables=0 .
После этого у меня все заработало как надо.
еще рекомендуют
sysctl net.bridge.bridge-nf-call-arptables=0

В итоге примерно получается надо изменить для openvz (это предлагается на сайте)

net.ipv4.ip_forward = 1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0

# Enables source route verification
net.ipv4.conf.all.rp_filter = 2

# Enables the magic-sysrq key
kernel.sysrq = 1

# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0

# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

И дополнительно неплохо
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
где висит 10.14.249.1 там и смотрите
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы