Jump to content
Калькуляторы

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

 

и т.д.

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

 

 

 

Share this post


Link to post
Share on other sites

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

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

 

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

Edited by vitalyb

Share this post


Link to post
Share on other sites
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 ставить перед опцией.

Share this post


Link to post
Share on other sites
например, пакет приходит из 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 ?

Edited by Tem

Share this post


Link to post
Share on other sites

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

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? что вы имеете ввиду? Пакеты между вланам без маскараднга хотите чтобы ходил?

Share this post


Link to post
Share on other sites

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

Клиент А (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, то у него все будет работать.

 

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

 

Share this post


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

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this