[Linux/PBR] Problem med dubbla NICs på enhet med flera gateways

Permalänk
Medlem

[Linux/PBR] Problem med dubbla NICs på enhet med flera gateways

Hej,

Jag har problem med routing på en Linuxbaserad enhet med dubbla nätverkskort. Korten går till varsitt nätverk med egna separata VLAN. Jag har problem med att få till policybaserade regler (PBR) att fungera som tänkt. På bilden nedan ser ni hur routingen ser ut och hur en traceroute hanteras.

Det intressanta här är att om jag ändrar default gateway till följande:

default via 192.168.200.1 dev eth0.3

Då fungerar det att göra traceroute som vanligt via eth0.3-kortet. Men då slutar eth1 att fungera.

Tar jag bort default gateway-sektionen helt slutar båda korten att fungera vad gäller traceroute.

Mer relevant konfiguration:

$ ip route show table eth0-table default via 192.168.200.1 dev eth0.3 192.168.200.0/24 dev eth0.3 scope link src 192.168.200.252 $ ip route show table eth1-table default via 192.168.50.1 dev eth1 192.168.50.0/24 dev eth1 scope link src 192.168.50.14 $ cat /etc/iproute2/rt_tables 1 lo-table 2 eth0-table 3 eth1-table ...

Går vi tillbaka igen när default gateway var som i bilden och ser på ARP-tabellen för eth0.3 så fallerar den att kolla upp 8.8.8.8 (INCOMPLETE). Men om jag lägger in detta manuellt in ARP-tabellen då fungerar traceroute. Detta är dock inte något som är särskilt hållbart i längden att lösa ARP-tabellen manuellt.

Routern verkar vara konfigurerad korrekt. Andra enheter kan använda båda nätverken och får således internetaccess.

Mitt mål är att kunna köra separat internettrafik på de olika korten, men har hittills inte listat ut hur man kan göra. Finns det någon som har en idé om vad som kan vara felet?

Permalänk
Medlem

Har du funderat på att använda VRF:er? (https://docs.kernel.org/networking/vrf.html)

Du kan då knyta interfacen eth1 och eth0.3 till varsin separat VRF, så de får helt separata routing-tabeller och därmed kan ha varsin default route.

Visa signatur

CCNP R/S + SPCOR, NSE7 (emeritus)

Permalänk
Medlem
Skrivet av vipers:

Har du funderat på att använda VRF:er? (https://docs.kernel.org/networking/vrf.html)

Du kan då knyta interfacen eth1 och eth0.3 till varsin separat VRF, så de får helt separata routing-tabeller och därmed kan ha varsin default route.

VRF:er ser trevligt ut. Dock ser det ut som att det inte är aktiverat i enhetens kernel, och jag har inte möjligheten att påverka den på kernel-nivå är jag rädd. Hade jag haft mer makt hade jag definitivt testat.

Permalänk
Medlem

Enheten vet inte att 192.168.200.1 är gateway vidare bara för du tvingar ut trafiken på eth0.3 med -i. Proxy-ARP på routern skulle lösa det du löste med statisk ARP, men du behöver ändå peka om trafiken på något vettigt sätt. Vilket tar oss vidare till PBR som du kort nämnde, men skrev inget om regler du evt skapat. Har du satt upp några regler för att ändra next-hop för exempelvis ICMP-trafik till 8.8.8.8?

Permalänk
Medlem
Skrivet av iARS:

Enheten vet inte att 192.168.200.1 är gateway vidare bara för du tvingar ut trafiken på eth0.3 med -i. Proxy-ARP på routern skulle lösa det du löste med statisk ARP, men du behöver ändå peka om trafiken på något vettigt sätt. Vilket tar oss vidare till PBR som du kort nämnde, men skrev inget om regler du evt skapat. Har du satt upp några regler för att ändra next-hop för exempelvis trafik till 8.8.8.8?

Tack för svar. Menar du att konfigurationen kan vara rätt men att det är hur jag använder traceroute som ger ett felaktigt resultat?

Här är konfigurationen som jag tidigare visade upp, som jag antog skulle räcka. Som jag tolkat det är detta PBR och jag har även länkat dessa regler i /etc/iproute2/rt_tables.

$ ip route show table eth0-table default via 192.168.200.1 dev eth0.3 192.168.200.0/24 dev eth0.3 scope link src 192.168.200.252