Jump to content
Калькуляторы

debian and routing, не работает nat в виртуальных машинах

Имеется довольно сложно запутанная архитектура одного небольшого сервера, выглядит так:

debian, ночью подняли с 7.9 до последней jessi

Linux windows 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux

 

к нему от коммутатора подключенно 2 линка и обьеденены в bond0

 

root@windows:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 17
Partner Key: 51
Partner Mac Address: 84:34:97:d8:80:80

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 3
Permanent HW addr: 00:15:17:dd:66:27
Aggregator ID: 1
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:15:17:dd:66:26
Aggregator ID: 1
Slave queue ID: 0
root@windows:~# 

 

 

Поверх этого bond передаются вланы,

 

auto eth1
iface eth1 inet manual
   bond-master bond0

auto eth2
iface eth2 inet manual
   bond-master bond0

auto bond0
iface bond0 inet manual
   bond-mode 802.3ad
   bond-miimon 100
   bond-downdelay 200
   bond-updelay 200
   bond-lacp-rate 1
   bond-slaves none


auto vmbr10
iface vmbr10 inet static
   bridge_ports bond0.10
   bridge_stp off
   bridge_fb 0
   address 10.10.10.1
   netmask 255.255.255.0
   gateway 10.10.10.254
   dns-nameservers 8.8.8.8
   dns-search local.loc
   up ip route add default via 10.10.10.254 table vlan10
   up ip rule add from 10.10.10.254 table vlan10 pref 110
   down ip rule del pref 110

 

 

интерфейс vmbr10 имеет внешний ip адрес который подключен к миру, мир с виртуального роутера пингается и все без проблем.

 

следующий этап, поднимаем тестовую виртуальную машину, подключаем её к интерфейсу vmbr141 к виртуальному роутеру, вещаем внутрение адреса и т.д., пингаем мир, все с виртуальной машины работает вроде как.

 

 

Переходим к тестам:

 

 

Пинг с виртуальной машины в мир нормально

Трасировка мира с виртуальной машины: умирает после роутера

Телнет на ресурсы в мире: умирает

 

 

Начинаем диагностировать:

tcpdump -nei bond0 host 178.2.1.2 and icmp (здесь надо обратить внимание, что трафик снимается с bond0, а не с vmbr и прочего)

12:28:30.555430 52:54:00:0d:38:24 > 88:62:7b:fd:be:90, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4, 178.2.1.2 > 176.3.3.10: ICMP echo request, id 2698, seq 1, length 64

12:28:30.556178 88:62:7b:fd:be:90 > 52:54:00:0d:38:24, ethertype 802.1Q (0x8100), length 102: vlan 10, p 0, ethertype IPv4, 176.3.3.10 > 178.2.1.2: ICMP echo reply, id 2698, seq 1, length 64

 

telnet:

tcpdump пусто.

 

Вешаем tcpdump на бридж:

tcpdump -nei vmbr10 host 178.2.1.2 and port 80

12:57:15.153301 52:54:00:0d:38:24 > 88:62:7b:fd:be:90, ethertype IPv4 (0x0800), length 74: 178.2.1.2.35213 > 176.3.3.10.80: Flags , seq 2556358102, win 14600, options [mss 1460,sackOK,TS val 9956629 ecr 0,nop,wscale 4], length 0

 

Таким образом получается по сути, трафик не уходит дальше vmbr10, попытка поснифать трафик на bond0.10 дает пустой результат, хотя:

vmbr10		8000.001517dd6627	no		bond0.10
						vnet1

интерфейсы в бриджах, все с виду нормально, думал может трафик уходит куда-то в другой интерфейс, а нету его там, все заканчивается на самом бридже.

 

 

 

Может у кого-то будут идеи что может быть в такой схеме?

post-59340-095458600 1447498339_thumb.jpeg

Share this post


Link to post
Share on other sites

Жить становится круче, жить становится веселей, при debian в качестве виртуального роутера, все работает на ура.

 

Получается проблема во фряхе.

Share this post


Link to post
Share on other sites

В общем в конечном итоге:

как только на сетевых ставишь e1000, все работает, проблема в virtio сетевых.

Share this post


Link to post
Share on other sites

непонятно чот надо докрутить на хост машине, если как только меняешь вариант сетевого драйвера то все гуд.

 

к стати в рассылке freebsd о таких проблемах куча топиков.

Share this post


Link to post
Share on other sites

непонятно чот надо докрутить на хост машине, если как только меняешь вариант сетевого драйвера то все гуд.

Это проблема документирования Linux TCP|IP стека и моста в частности.

 

к стати в рассылке freebsd о таких проблемах куча топиков.

В какой из?

Share this post


Link to post
Share on other sites

непонятно чот надо докрутить на хост машине, если как только меняешь вариант сетевого драйвера то все гуд.

Это проблема документирования Linux TCP|IP стека и моста в частности.

Да? Кривая работа BSD в качестве гостя с virtio это кривое документирование linux? :)

Share this post


Link to post
Share on other sites

vlad11 , вы используете виртуального клиента с соединенем через бридж и виртуальный роутер на фре поверх квм на одной машине?

если вы используете просто тупую виртуалку то там проблем нету.

Share this post


Link to post
Share on other sites

непонятно чот надо докрутить на хост машине, если как только меняешь вариант сетевого драйвера то все гуд.

Это проблема документирования Linux TCP|IP стека и моста в частности.

Да? Кривая работа BSD в качестве гостя с virtio это кривое документирование linux? :)

 

Кривая работа моста и lagg в Линукс погуглите.

Вы услышите много стонов, как внезапно со стороны линукса перестают ходить arp запросы и соответственно пинговаться удаленные хосты.

Share this post


Link to post
Share on other sites

vlad11 , вы используете виртуального клиента с соединенем через бридж и виртуальный роутер на фре поверх квм на одной машине?

если вы используете просто тупую виртуалку то там проблем нету.

 

Я использовал Проксмокс 3.1. Bond из нескольких физических интерфейсов. Затем расщеплял bond-вланы из общего bond. И потом из них делал интерфейсы.

Дальше подключал их в виртуалку:

net0: virtio=D6:D9:B3:D7:B7:E3,bridge=vmbr98
net1: virtio=2E:D5:21:90:51:70,bridge=vmbr99
net2: virtio=9A:66:7F:0A:4F:CC,bridge=vmbr100
net3: virtio=AE:03:5F:99:86:B3,bridge=vmbr95

 

В виртуалках - Винда и Фряха, с драйверами virtio.

На винде отказы сетевых карточек были больше всего заметнее.

После примерно 10ГБ траффика интерфейс переставал пинговаться.

Ребут виртуалки не помогал.

Помогал ребут со сменой маков всех сетевых адресов.

 

 

Сейчас использую jail во FreeBSD.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.