Перейти к содержимому
Калькуляторы

Vlan и iptables

Имеется сервер под CentOS, на нем поднято несколько вланов

vlan101 Link encap:Ethernet HWaddr 00:1B:21:40:EC:C9

inet addr:10.10.0.9 Bcast:10.10.0.15 Mask:255.255.255.248

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:57771 errors:0 dropped:0 overruns:0 frame:0

TX packets:192936243 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:2873852 (2.7 MiB) TX bytes:3935923457 (3.6 GiB)

 

vlan102 Link encap:Ethernet HWaddr 00:1B:21:40:EC:C9

inet addr:10.10.0.17 Bcast:10.10.0.23 Mask:255.255.255.248

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:9473 errors:0 dropped:0 overruns:0 frame:0

TX packets:449179 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:450500 (439.9 KiB) TX bytes:353661591 (337.2 MiB)

 

vlan103 Link encap:Ethernet HWaddr 00:1B:21:40:EC:C9

inet addr:10.10.0.1 Bcast:10.10.0.3 Mask:255.255.255.252

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:54633 errors:0 dropped:0 overruns:0 frame:0

TX packets:27851335 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:2597860 (2.4 MiB) TX bytes:2646215483 (2.4 GiB)

 

vlan104 Link encap:Ethernet HWaddr 00:1B:21:40:EC:C9

inet addr:10.10.0.25 Bcast:10.10.0.31 Mask:255.255.255.248

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:35882 errors:0 dropped:0 overruns:0 frame:0

TX packets:1836503 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:6228336 (5.9 MiB) TX bytes:1885815026 (1.7 GiB)

Сервак воткнут в Dlink 3028, на нем

vlan101 port1 untag, 28 tag

vlan102 port2 untag, 28 tag

и т.д.

 

чтобы клиенты не страдали подменой ип в иптаблес прописал след.

iptables -t filter -I INPUT --in-interface ! vlan101 -d 10.10.0.9 -j DRОP

iptables -t filter -I INPUT --in-interface ! vlan102 -d 10.10.0.17 -j DRОP

 

и т.д.

Все отлично пашет, но с сервера не пингуются клиентские ипишники, а извне все норма. Проблема вприниципе не особо напрягает, но всеж хочется разрулить её.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

например, пакет приходит из vlan103, т.е. вполне себе подходит под правило "не vlan101", и режется потому, что dst у него не 10.10.0.9, конечно, а 10.10.0.1

неправильно.

 

покажите все правила

Изменено пользователем vitalyb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables -t filter -I INPUT --in-interface ! vlan101 -d 10.10.0.9 -j DRОP
Я б скорее писал

iptables -t filter -I INPUT -i vlan101 ! -d 10.10.0.9 -j DRОP

Кстати, в последнее время принято отрицание (т.е восклицательный знак) в iptables ставить перед опцией.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

например, пакет приходит из vlan103, т.е. вполне себе подходит под правило "не vlan101", и режется потому, что dst у него не 10.10.0.9, конечно, а 10.10.0.1

неправильно.

 

покажите все правила

других правил нету, только ети

еще один глюк...когда пытаюсь удалить правило выдает

iptables: Bad rule (does a matching rule exist in that chain?)

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

 

 

iptables -t filter -I INPUT --in-interface ! vlan101 -d 10.10.0.9 -j DRОP
Я б скорее писал

iptables -t filter -I INPUT -i vlan101 ! -d 10.10.0.9 -j DRОP

Кстати, в последнее время принято отрицание (т.е восклицательный знак) в iptables ставить перед опцией.

а разве ето правило не будет дропать всё, что идет из vlan101 не на 10.10.0.9 ?

Изменено пользователем Tem

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

какието бессмысленные правла:

iptables -t filter -I INPUT --in-interface ! vlan101 -d 10.10.0.9 -j DRОP

iptables -t filter -I INPUT --in-interface ! vlan102 -d 10.10.0.17 -j DRОP

зачем вам они?

 

страдали подменой IP? что вы имеете ввиду? Пакеты между вланам без маскараднга хотите чтобы ходил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну вот например ...есть два клиента

Клиент А (vlan101) его ip 10.10.0.2, шлюз 10.10.0.1 , маска 255.255.255.252

Клиент B (vlan102) его ip 10.10.0.10, шлюз 10.10.0.9 , маска 255.255.255.248

 

на сервере имеется 2 интерфейса

eth0 uplink

eth1 смотрит в локалку и имеет ip, ну скажем 10.20.30.1/24

создаю на нем 2 vlan интерфейса

vconfig add eth1 101
vconfig add eth1 102
ifconfig vlan101 10.10.0.1 netmask 255.255.255.252
ifconfig vlan102 10.10.0.9 netmask 255.255.255.248

 

на свиче создаю 2 влана

vlan101 порт1 унтаггед (в него воткнут клиент), порт 28 таггед (в него воткнут сервер)

vlan102 порт2 унтаггед (в него воткнут клиент), порт 28 таггед (в него воткнут сервер)

 

Клиент В ставит у себя ip 10.10.0.9 и маску 255.255.255.0, а шлюзом пропишет 10.10.0.1, то у него все будет работать.

 

Поетому этими правилами и пытаюсь закрыть доступ к "левым" шлюзам, хотя может ето и не нужно делать ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Клиент В ставит у себя ip 10.10.0.9 и маску 255.255.255.0, а шлюзом пропишет 10.10.0.1, то у него все будет работать.

Так будет работать только если все в одном vlan, а у вас разные. Курите дальше, чего то вы не допоняли или не так настроили :0)

 

Пакеты между вланам без маскараднга хотите чтобы ходил?

А они и так ходят ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, блин, уже запарился курить, поетому тут и спросил :)

Думаю уже забить на ето, ибо пашет только подмена шлюза...ип юзера если сменить, то сразу все перестает работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да какая нафик подмена шлюза???

Vlan - это разные подсети - обмен трафиком между подсетями только через шлюз.

В случае с маской 252 у вас в подсети всего 4 адреса - 1-сеть, 2-броадкаст, 3-шлюз, 4-абонент, т.е. абонент может использовать только 4й IP - в вашем случае это:

10.10.0.1 - адрес шлюза

10.10.0.2 - адрес абонента

10.10.0.0 - сеть

10.10.0.3 - броадкаст

Все! выход в мир у юзера только через 10.10.0.1, какой бы он IP себе не поставил работать будет у него только с 10.10.0.2 потому что это его подсеть, к ней добавляется тег 802.1q, и пакеты других подсетей там не ходят.

 

В случае с маской 248 - абонент может поставить себе побольше адресов, но шлюз в этой подсети все равно 1 :) и единственное, что юзера могут поменять - IP внутри подсети, а если убрать шлюз или сменить его - они увидят только друг друга в пределах 1го Vlan.

 

А если у вас все работает с любыми адресами - возникает подозрение, что все по прежнему в одном vlan, возможно даже в default

 

А какое железо и Ос у вас? (ну так для интереса)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еслиб были в одном Vlan'е то еслиб я поставил у второго клиента ипишник из подсети первого, то тоже работало.

Железо: свич длинк 3028....сервак под управлением CentOS, сетевушки Intel Corporation 82576 Gigabit Network Connection (rev 01)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно речь идет о том, что Linux по умолчанию на ARP запросы отвечает со всех интерфейсов обо всех адресах. Если клиент поставит "чужой" шлюз - он точно так же ARP'ом получит тот же мак шлюза (потому что мак в разных виланах один и тот же) и у него всё будет работать. Чисто эстетический момент.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.