Virtuálne sieťové rozhrania v iptables

Róbert Čerňanský openhs na tightmail.com
Sobota Listopad 19 14:52:20 CET 2016


Zdravím,

potrebujem z jednej fyzickej sieťovky (eth0) spraviť ako keby dve a
tieto potom rozlišovať v iptables.  Je to vnútorná sieťovka na routeri.
Ten sa používa sa ako brána do internetu a ja práve potrebujem
rozlišovať pakety smerujúce do internetu.

Čiže klient by mohol mať nastavený ako default gw 192.168.1.1 alebo
192.168.1.2.  Obidve adresy by išli fyzicky na eth0 a v iptables by som
chcel rozlíšiť na ktorú z tých dvoch IP to od klienta prišlo.

Skúšal som fyzickej sieťovke priradiť ďalšiu IP adresu, ale to
nepomohlo, pretože ak ide o gateway traffic, tak cieľová IP adresa,
ktorá príde od klienta je adresa do internetu, nie adresa GW.

Potom som skúsil vytvoriť virtuálnu sieťovku - label:

  ip addr add ... label eth0:1

No iptables mi neboli schopné zachytiť interface eth0:1; videli len, že
všetko prichádza na eth0.  Čiže pravidlo, kde bolo -i eth0:1 nikdy
nematchlo.

Podobne mi to nefungovalo ani s virtuálnymi rozhraniami typu veth.
Vytvoril som pár:

  ip link add veth0 type veth peer name veth1

veth0 som dal do bridge s eth0, ktorému som dal IP 192.168.1.1.  veth1
som nakonfiguroval na 192.168.1.2.  iptables opäť videli, ako keby
všetko prichádzalo na br0, napriek tomu, že som posielal pakety priamo
na 192.168.1.2.  Skúšal som to v PREROUTING-u tabuľky nat.  Teda napr.
pravidlo:

  iptables -A -t nat -A PREROUTING -m limit --limit 500/h \
    --limit-burst 60 -j LOG --log-prefix iptables_prerouting_log:

mi v logu ukázalo:

  ... iptables_prerouting_log:IN=br0 OUT= MAC=... SRC=192.168.1.10 DST=192.168.1.2

Teda aj keď cieľová adresa bola 1.2, tak interface bol br0, nie veth0.

Je nejako možné zachytiť v iptables virtuálne rozhranie?  Alebo ako
inak by som mohol v iptables rozlíšiť ktorá z gateway IP-čiek bola
použitá?

Róbert


-- 
Róbert Čerňanský
E-mail: openhs na tightmail.com
Jabber: hs na jabber.sk


Další informace o konferenci Linux