Я пытаюсь настроить подынтерфейсы на моем сервере Ubuntu 14.04 для каждой VLAN. Я считаю, что успешно настроил их с помощью vconfig, но подынтерфейс пингуется только с хостов в его собственной VLAN. Мне понадобятся хосты за пределами его VLAN, чтобы иметь возможность подключиться к нему. Кажется, это отлично работает для моего сервера CentOS, поэтому я знаю, что моя сеть правильная. Я также вижу пакеты запросов ICMP на подынтерфейсе, когда я делаю tcpdump
и пингую подынтерфейс с клиента за пределами VLAN.
Есть идеи? Какие еще советы по устранению неполадок вы можете мне дать?
EDIT: Мне удалось это исправить. Мой tcpdump на сервере показывал запросы icmp echo, но не отвечал. Я нашел связанный постздесьВключение регистрации марсианского источника следующим образом:
echo 1 >/proc/sys/net/ipv4/conf/eth2/log_martians
а потом
sysctl net.ipv4.conf.all.rp_filter=2
Исправил. Удивляюсь, что это не встречается чаще.
решение1
Мне удалось это исправить. Мой tcpdump на сервере показывал запросы icmp echo, но не отвечал. Я нашел связанный постздесьВключение регистрации марсианского источника следующим образом:
echo 1 >/proc/sys/net/ipv4/conf/eth2/log_martians
а потом
sysctl net.ipv4.conf.all.rp_filter=2
Исправил. Удивляюсь, что это не встречается чаще.
решение2
Чтобы ваш клиент мог выполнить команду ping на IP-адрес вашего сервера, должно выполняться одно из следующих условий:
- Клиент должен находиться в той же [V]LANИиспользовать IP-адрес в той же IP-подсети, что и адрес, который он пытается пинговать.
ИЛИ
- Должен быть IP-маршрутизатор (или сеть маршрутизаторов), соединяющий [V]LAN и IP-подсеть клиента с [V]LAN и IP-подсетью сервера.
Если вы не настроили маршрутизатор между двумя VLAN (или между двумя IP-подсетями в одной VLAN, если это то, что вы делаете), то вы не предоставили сетевой IP-маршрут для прохождения пингов.
Обратите внимание, что некоторые ОС, по крайней мере в некоторых конфигурациях, не обращают внимания на то, на какой интерфейс пришел определенный IP-пакет. Поэтому в таких случаях они могут отвечать на ping-запрос, который пришел на «неправильный» интерфейс. Возможно, ваша среда CentOS была неряшливой, как эта, но ваш Ubuntu-бокс более осторожен в отношении того, какой интерфейс есть какой. Или, возможно, вы включили IP-пересылку (простейший вариант IP-маршрутизатора) на CentOS-боксе, но не на Ubuntu-боксе.
решение3
Похоже, вам нужны маршруты для конкретных удаленных сетей, к которым вы пытаетесь подключиться.
Для проверки вставьте маршрут в таблицу маршрутизации следующим образом:
sudo route add -net 172.16.0.0/12 gw 192.168.1.113 dev eth.<vlan number>
Чтобы сделать эти маршруты постоянными, вам потребуется сделать запись в /etc/network/interfaces следующего вида:
up route add [-net|-host] <host/net>/<mask> gw <host/IP> dev <Interface>