Source based routing middels ip route maar een exclusion

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 15:56
Situatie:
Linux router (Sophos UTM), daar heb ik een PPP verbinding met xs4all over en ik heb een GRE tunnel met extraip.nl om een /28 reeks te kunnen gebruiken voor servers die ik bereikbaar wil hebben achter de Sophos.

Werkt allemaal prima door source based routing, omdat ik die pakketten vanaf het extraip subnet terug de GRE tunnel in moet gooien, omdat xs4all de source van de pakketten niet accepteert om te routeren.

Probleem alleen is dat ik een 10.x subnet heb achter diezelfde sophos die bij een ip adres in de extraip reeks moet kunnen. De server in de 10.x subnet stuurt netjes het verzoek naar de server in de extraip reeks, maar de Sophos stuurt het antwoord vervolgens de GRE tunnel in. Logisch, gezien de configuratie.

Iemand enig idee hoe ik de source based routing kan configureren, maar niet als de destination een 10.x reeks is (en dus de gewone routeringstable gebruikt)?

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Je hebt als 't goed is twee routing tabellen. Daarin moet beide een route naar je 10/8 subnet staan.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 15:56
CyBeR schreef op woensdag 10 juni 2015 @ 23:06:
Je hebt als 't goed is twee routing tabellen. Daarin moet beide een route naar je 10/8 subnet staan.
Ik probeer je even te begrijpen waar je naar toe wilt.

Dit is wat er uitgevoerd wordt om de policy te configureren:
ip route add default dev tunsit table 50
ip rule add from <extraipsubnet>/28 table 50

De rest zijn directly connected subnets en worden door de linux table afgehandeld (als ik het goed zeg, ik ben niet sterk in linux).

[ Voor 23% gewijzigd door mgizmo op 10-06-2015 23:26 ]


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 15:04

CAPSLOCK2000

zie teletekst pagina 888

Ja, dat is de juiste richting. Als je dat nog niet gedaan hebt moet je eens de Linux Advanced Routing & Traffic Control HOWTO lezen, die legt alle details uit.

[ Voor 2% gewijzigd door Hero of Time op 11-06-2015 08:31 ]

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

mgizmo schreef op woensdag 10 juni 2015 @ 23:15:
[...]

Dit is wat er uitgevoerd wordt om de policy te configureren:
ip route add default dev tunsit table 50
Dat voegt een default route toe aan routing tabel 50: een tweede routing tabel.
ip rule add from <extraipsubnet>/28 table 50
Dat vertelt dat verkeer vanaf dat subnet routing tabel 50 moet gebruiken. Maar in die tabel staat alleen maar een default route. Er moet ook een route naar 10.whatever in staan.
De rest zijn directly connected subnets en worden door de linux table afgehandeld (als ik het goed zeg, ik ben niet sterk in linux).
Nee, met jouw 'ip rule' commando vertel je dat die alternatieve tabel gebruikt moet worden en geen andere.

Een andere optie is wellicht om eerst een rule in te geven op basis van het dest ip:

ip rule add from 10.0.0.0/8 goto 32766 prio 1


(verwijst naar de default lookup rule) of

ip rule add from 10.0.0.0/8 table main prio 1

[ Voor 13% gewijzigd door CyBeR op 11-06-2015 02:25 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 15:56
CyBeR schreef op donderdag 11 juni 2015 @ 02:17:
[...]


Dat voegt een default route toe aan routing tabel 50: een tweede routing tabel.


[...]


Dat vertelt dat verkeer vanaf dat subnet routing tabel 50 moet gebruiken. Maar in die tabel staat alleen maar een default route. Er moet ook een route naar 10.whatever in staan.


[...]


Nee, met jouw 'ip rule' commando vertel je dat die alternatieve tabel gebruikt moet worden en geen andere.

Een andere optie is wellicht om eerst een rule in te geven op basis van het dest ip:

ip rule add from 10.0.0.0/8 goto 32766 prio 1


(verwijst naar de default lookup rule) of

ip rule add from 10.0.0.0/8 table main prio 1
toon volledige bericht
Top dat je mee denkt, maar ik denk dat ik hier niets mee bereik:
src: 10.0.0.0/8 dst: <extraip> = wordt netjes door de route table afgeleverd bij de server in het <extraip> subnet.
het retourverkeer is dan src: <extraip> dst: 10.0.0.0/8 = wordt door de "from <extraip>" in de rule de GRE tunnel ingestuurd.

Een from 10.0.0.0/8 heeft dan toch geen zin, omdat de source geen 10.0.0.0/8 meer is (het gaat immers om het retour verkeer in dit geval) ?

Ik moet het willen begrijpen, sorry dat ik dan niet iets direct aanneem als ik de indruk krijg dat het niet werkt :)

Acties:
  • 0 Henk 'm!

  • ik222
  • Registratie: Maart 2007
  • Niet online
De from rule gebruik je alleen om te zeggen dat verkeer vanaf die /28 tabel 50 moet gebruiken. De routeringen in die tabellen zelf zijn gewoon destinations. In die tabel 50 moet dus gewoon ook een route staan naar de 10.0.0.0/8 zoals CyBeR zegt.

Om het te begrijpen moet je even afstappen van het idee dat verkeer met 10.0.0.0/8 weer naar de main tabel moet. Je kunt namelijk net zo makkelijk zorgen dat tabel 50 de route ook kent.

De andere optie die beschreven wordt zegt dat de de regel op basis van destination 10.0.0.0/8 die naar main wijst een hogere prioriteit geeft dan de regel die op basis van source de /28 naar table 50 wijst. Dan krijg je dus dat alles naar tabel 50 gast tenzij het al matches op de regel met een hogere prioriteit.

[ Voor 54% gewijzigd door ik222 op 12-06-2015 17:44 ]


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 15:56
Door je bericht begreep ik de reactie van CyBeR ook. Dus dat heb ik zojuist geprobeerd:

<M> utm:/root # ip rule add from 10.0.0.0/8 table 32766 prio 1


<M> utm:/root # ip rule show
0:	from all lookup local 
1:	from 10.0.0.0/8 lookup 32766 
32764:	from <extraip>/28 lookup 50 
32765:	from all fwmark 0x40000/0x40000 lookup 252 
32766:	from all lookup main 
40000:	from <ppp0 van xs4all> lookup 200 
65535:	from all lookup default 


<M> utm:/root # tcpdump -n -i tunsit
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tunsit, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
22:09:17.591180 IP <een ip X uit extraip reeks> > 10.20.0.21: ICMP echo reply, id 1, seq 15140, length 40
22:09:17.596637 IP 5.255.66.61 > <een ip X uit extraip reeks>: ICMP host 10.20.0.21 unreachable - admin prohibited filter, length 36


<M> utm:/root # netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.20.0.0       0.0.0.0         255.255.255.0   U         0 0          0 eth3
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
<net addr extraip>    0.0.0.0         255.255.255.240 U         0 0          0 eth2.1000
<net addr extraip>    0.0.0.0         255.255.255.240 U         0 0          0 tunsit
<xs4all ip>   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0


Maar zoals de tcpdump laat zien, stuurt ie retour verkeer nog steeds de GRE tunnel in. Dat ik jullie nu denk te begrijpen, werkt het niet :-(

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 15:04

CAPSLOCK2000

zie teletekst pagina 888

Je laat ons de main route table zien, maar wat staat er in table 32766?
ip route show table 32766

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • mgizmo
  • Registratie: Januari 2009
  • Laatst online: 15:56
CAPSLOCK2000 schreef op zaterdag 13 juni 2015 @ 23:11:
Je laat ons de main route table zien, maar wat staat er in table 32766?
ip route show table 32766
Bericht van CyBeR niet goed gelezen... ik had de goto moeten gebruiken. Maakt geen verschil. Table is overigens leeg.

<M> utm:/root # ip rule show
0:	from all lookup local 
1:	from 10.0.0.0/8 goto 32766
32764:	from <extraip>/28 lookup 50 
..
..
32766:	from all lookup main 

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

table 32766 bestaat standaard inderdaad niet. De 'rule' 32766 is de standaard 'kijk naar de default routing table' rule.

Op zich is dit verhaal vrij simpel maar je moet even de klik hebben. De meeste mensen dealen met één enkele routing tabel waar alles in staat. Routing tabellen werken enkel en alleen op basis van destination IP. Jij echter wilt nu routeren op basis van het source IP-adres. De manier waarop dar gedaan wordt, is door meerdere volledige (destination-based) route-tabellen te hebben, en te selecteren welke er gebruikt wordt aan de hand van het source IP. Dat werkt best goed, maar je moet dan dus wel je volledige routing tabel dupliceren in die tweede tabel. Of je moet de goede rules instellen zodat de normale ('main') tabel gebruikt wordt waar nodig.

Een veelgemaakte fout is denken dat die twee routing tabellen elkaar aanvullen. Dat is niet zo: als je met 'ip rule' zegt: 'gebruik tabel 3', dan wordt alléén díe tabel gebruikt en níet de default tabel.

Vergeet ok 'ip route flush cache' niet trouwens.

All my posts are provided as-is. They come with NO WARRANTY at all.

Pagina: 1