Пакеты не пересылаются с помощью linux bridge
У меня есть виртуальная машина (VM1) с одним интерфейсом (eth0). У VM1 есть один мост linux (br1), и к нему подключен интерфейс eth0. Через eth0 будут поступать пакеты с двумя разными диапазонами ip (192.168.122.0/24 и 10.10.10.0/24). На самом деле у br1 два ips:
- 192.168.122.2/24
- 10.10.10.1/24
Первый ip принадлежит сети mgmt, которая позволяет выходить в интернет через шлюз 192.168.122.1. Второй ip принадлежит виртуальной сети (10.10.10.0/24), где VM1 является шлюзом. Если я хочу получить доступ к Интернету с VM1, маршрут
по умолчанию через 192.168.122.1 dev br1
и это работает правильно.
Поскольку эта виртуальная машина является шлюзом, я создал правило «MASQUERADE» в iptables, чтобы пакеты с исходным IP-адресом 10.10.10.0/24 получали исходный IP-адрес VM1 для доступа в Интернет (192.168.122.2):
-A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE
Однако что-то не работает хорошо. Когда я пытаюсь пропинговать 8.8.8.8 с другой виртуальной машины с IP:
- 10.10.10.16
Вот что я вижу, когда выполняю tcpdump в br1:
08:56:19.498107 IP 10.10.10.16 > 8.8.8.8: ICMP echo request, id 58113, seq 0, length 64 08:56:19.498265 IP 192.168.122.2 > 8.8.8.8: ICMP echo request, id 58113, seq 0, length 64 08:56:19.509490 IP 8.8.8.8 > 10.10.10.16: ICMP echo reply, id 58113, seq 0, length 64
И вот что я вижу, когда выполняю tcpdump в eth0:
08:57:19.331692 IP 10.10.10.16 > 8.8.8.8: ICMP echo request, id 58369, seq 0, length 64 08:57:19.331804 IP 192.168.122.2 > 8.8.8.8: ICMP echo request, id 58369, seq 0, length 64 08:57:19.343085 IP 8.8.8.8 > 192.168.122.2: ICMP echo reply, id 58369, seq 0, length 64
В eth0 я вижу, что 'echo reply' идет к 192.168.122.2, а затем в br1, я вижу, что из-за MASQUERADE ip назначения изменился на 10.10.10.16. Тем не менее, я также должен увидеть этот пакет (источник: 8.8.8.8; пункт назначения 10.10.10.16) в eth0, так как он является интерфейсом для достижения 10.10.10.16, но его там нет. Мне кажется, что br1 не пересылает пакет на интерфейс eth0, почему это происходит?
1 - Обратите внимание, что если я пинг 10.10.10.16 с VM1, это работает:
09:01:54.502894 IP 10.10.10.1 > 10.10.10.16: ICMP echo request, id 26878, seq 1, length 64 09:01:54.503829 IP 10.10.10.16 > 10.10.10.1: ICMP echo reply, id 26878, seq 1, length 64
2 - MAC-адрес 10.10.10.16 - fa: 16: 3e: 8c: 0d: 68, и я могу видеть его в таблице mac из br1:
port no mac addr is local? ageing timer 2 52:54:00:33:82:d0 yes 0.00 2 52:54:00:33:82:d0 yes 0.00 2 52:54:00:bd:6b:e5 no 0.00 2 fa:16:3e:8c:0d:68 no 19.47 2 fe:54:00:33:82:d0 no 1.20
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
3
Каковы различия между оконными менеджерами Linux?
-
5
Поделитесь XP сетевым подключением без перезагрузки?
-
5
Как мне сказать Windows использовать 802.11 вместо 3G?