Re: Virtuálne sieťové rozhrania v iptables

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Neděle Listopad 20 11:57:07 CET 2016


On Sun, 20 Nov 2016, Róbert Čerňanský wrote:

> Nepodarilo sa mi dosiahnuť, aby router oznamoval dve MAC adresy ani s
> týmito nastaveniami.  ARP request na IP 1.2 ostal bez odpovede.
>
> Zeditoval som teda ARP tabuľku na klientovi a nastavil tam tie správne
> MAC adresy.  Na routeri som už logu iptables videl, že pakety chodia na
> to správne rozhranie a MAC adresu, avšak odpoveď na pingy chodili len z
> jedného z nich.  Kde sa odpoveď stratila som nezistil (ale určite
> niekde na tom routeri).  Skúšal som to na kombináciách:
>
>  - eth0 (IP 1.1) - macvlan[private aj bridge] (IP 1.2) a
>  - eth0 (bez IP) - macvlan[bridge] (IP 1.1) - macvlan[bridge] (IP
>    1.2).

Teď jsem si znovu pořádně přečetl, jak to chcete mít nastavené:

> Čiže klient by mohol mať nastavený ako default gw 192.168.1.1 alebo
> 192.168.1.2.

Takže chcete dvě IP adresy v jedné IP síti. A předpokládám, že klienti 
jsou také naházení v tom jednom prostoru. To je, s prominutím, totální 
bordel.

Teď si představte, že jste gateway, máte IP adresu klienta, a máte se 
rozhodnout, které rozhraní máte použít. Dokážete to? Nejspíš nikoli.
A ze stejného důvodu nefungovaly ani ty sysctl arp_...

Pokud by to mělo fungovat, tak musí jít nějak rozlišit, do které skupiny 
který klient patří, a routování musí být nastaveno tak, aby se provoz pro 
každou skupinu směroval přes příslušné rozhraní.

Možná by se také dalo zkonstruovat něco na způsob VRF. Tuším, že Linux to 
umí dělat přes netns (net namespaces) -- když dáte každé rozhraní do 
jiného netns, tak se nebudou míchat dohromady a budou se chovat, jako by 
byly na různých fyzických strojích. Ale tím ten problém neodstraníte, 
protože při komnikaci s okolním vesmírem bude u příchozích paketů stejně 
někde nutné rozhodnout, do kterého netns se to má strčit.

Možná by bylo vůbec nejlepší se vrátit na začátek a zapřemýšlet nad tím, 
proč vůbec chcete počítače rozlišovat právě a pouze podle toho, jakou 
používají IP adresu gw, a zda by je nebylo možno rozlišit nějakým méně 
bláznivým způsobem. Např. tak, že každá skupina bude mít svůj vlastní 
prostor IP adres (a případně bude ve svém zvláštním vlanu). Nebo tak, že 
si budou ve stejném prostoru, ale na gw budete mít ipset, kde budou 
vyjmenované adresy vyžadující zvláštní zacházení. Možností je určitě ještě 
víc.

-- 
Pavel Kankovsky aka Peak                      "Que sais-je?"


Další informace o konferenci Linux