
Я запускаю приложение в Ubuntu12.04, которое я написал, которое выполняет удаленное управление коммутатором. У меня есть только одна сетевая карта, подключенная к сети управляемых коммутаторов, eth0, которая установлена с IPv4 10.0.0.1/24. Этот адрес IPv4 — единственный адрес, который может использовать эта машина Ubuntu, поскольку это единственный «глобально» маршрутизируемый адрес, назначенный машине Ubuntu (из-за какого-то сетевого администрирования, а не из-за технических проблем...)
Мне нужно, чтобы трафик управления коммутатором (NetConf через SSH, используя порт UDP 830) включал тег VLAN 802.1q с идентификатором VLAN 444) при отправке кадров NetConf, и ответы также будут получены с этим тегом. Весь остальной трафик (http, ftp, dhcp, snmp и т. д.) будет использовать eth0 без тега VLAN.
Я пробовал использовать интерфейс VLAN eth0.444 на eth0, но, похоже, отправляемый трафик не включает тег VLAN.
Можно ли (и как) использовать ebtables/iptables для добавления определенного тега VLAN к определенному трафику порта UDP? Будет ли решение ebtables/iptables работать также для пути приема?
Спасибо!
Дэйвид
решение1
iptables
и ebtables
не может устанавливать теги VLAN на пакеты. Для этого и нужны подинтерфейсы VLAN.
Естьстатья на вики Ubunut, в которой обсуждаются VLANкоторые вам, вероятно, следует пересмотреть. Вкратце, однако, вы хотите:
Убедитесь, что в модуль 802.1q загружен файл
modprobe 8021q
.Создайте подинтерфейс VLAN с помощью
vconfig add eth0 444
.Добавьте IP-адрес и маску подсети из подсети, используемой в VLAN 444, к
eth0.444
подинтерфейсу с помощьюip addr add x.x.x.x/z dev eth0.444
Вам также потребуется настроить порт коммутатора, к которому подключен сервер, для приема тегированных кадров для VLAN 444. Вы не указали марку вашего коммутатора, поэтому я не могу дать вам подробных указаний, но вы, вероятно, ищете либо «магистральный», либо «общий» порт, настроенный как тегированный член VLAN 444 и нетегированный член любой VLAN, используемой подсетью, назначенной интерфейсу eth0
.
Имейте в виду, что tcpdump
можетесть проблемы с отображением тегов VLANпоэтому не обязательно предполагайте, что кадры не помечены, если вы просто используете tcpdump
сам хост для проверки того, что кадры помечены.
Редактировать:
Обычно между VLAN и IP-подсетями существует отношение один к одному. Было бы крайне нетипично, если бы коммутатор имел интерфейс управления в VLAN 444, который был бы той же IP-подсетью, что и VLAN, eth0
в которой находится ваш текущий порт.
решение2
Тег 802.1Q вставляется в заголовок MAC, и ядро не будет его декодировать, если ваш интерфейс не помечен тегом VLAN. Таким образом, даже если вы можете исказить исходящие пакеты, входящий трафик с тегом VLAN останется проигнорированным.
Все, что вам нужно сделать, это создать интерфейс с тегом VLAN, как вы это делали, и добавить к нему IP-адрес в том же диапазоне, что и IP-адрес коммутатора, к которому вы пытаетесь получить доступ.