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