[route+vpn] Alleen bepaald subnet via VPN tunnel bereiken

Pagina: 1
Acties:
  • 940 views sinds 30-01-2008
  • Reageer

  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 19-01 10:48
Om vanaf thuis van bepaalde diensten van de Universiteit gebruik te maken, moet je een VPN tunnel leggen naar de universiteit. Voor het leggen van deze tunnel gebruik ik vpnc, wat een linux versie is voor Cisco-achtig VPN spul. Affijn, daar gaat het niet echt om. Die tunnel leggen is het probleem niet.

Voor de tunnel wordt een TUN interface aangemaakt, welke een ip adres verkrijgt in de range van de UvT. In de huidige situatie wordt dat dus mijn nieuwe ip adres voor de buitenwereld.

Het probleem is dat, wanneer ik een VPN tunnel open, ál het verkeer over die tunnel gaat. Daardoor ontstaat er een situatie als deze:
code:
1
laptop -> router ---> VPN gateway -> internet en UvT-net

Dat is in mijn ogen echter niet wenselijk, omdat die tunnel mijn latency en throughput enigsinds schaadt, en (belangrijker) alle connecties opnieuw gelegd moeten worden (p2p, gaim).

De situatie die ik voor ogen heb, is alsvolgt:
code:
1
2
laptop -> router ---> internet
                 ---> VPN gateway -> UvT-net

Hierdoor is er geen sprake van vertraging of verstoring van het reguliere verkeer, als ik het goed heb. Na een google-zoektocht kwam ik erachter dat dit wellicht mogelijk is mbv de route table in Linux. Dan zou het mogelijk zijn om alleen het verkeer met destination UvT-net te routen over de tun0 interface, en de rest gewoon direct over mijn eth0 te laten lopen.

Ik heb diverse tutorials doorgespit, en heel wat geëxperimenteerd, maar ik kom er toch niet uit. Ik hoop dat er hier iemand rond loopt met voldoende route kennis om mij op weg te helpen. Misschien is het heel simpel. In dat geval: mijn excuses, maar ik weet er echt heel weinig van.

Hieronder wat aanvullende gegevens. Misschien is dat wel handig.

Dit is mijn route table zonder VPN tunnel:
code:
1
2
3
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0


Dit mijn table met VPN (alles over VPN dus):
code:
1
2
3
4
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
kubvpnpub01.uvt 192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         vp0182.uvt.nl   0.0.0.0         UG    0      0        0 tun0


192.168.1.0 thuisnetwerk
192.168.1.1 router
192.168.1.2 mijn laptop (eth0)
kubvpnpub01.uvt (137.56.127.10) VPN gateway
137.56.0.0 UvT net
vp0182.uvt.nl (137.56.x.y) mijn laptop (tun0)

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW


  • Zwerver
  • Registratie: Februari 2001
  • Niet online
even uit mijn blote bolletje:

ip route add 137.56.127.10 via 192.168.1.1 
ip route add 137.56.0.0 via 137.56.127.10
ip route add default via 192.168.1.1


Waar ik er even vanuit ga dat 137.56.127.10 het eindpunt is van de vpnverbinding is op de uvt.

[ Voor 0% gewijzigd door Zwerver op 07-09-2006 09:41 . Reden: zonder -net dus :P ]

Woonachtig Down Under. Ik negeer je insults niet, maar tegen de tijd dat ik ze lees zijn ze meestal niet relevant meer


  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 19-01 10:48
Volgens mij loopt er op die manier niks via de VPN tunnel (de tun0 iface).

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW


  • Zwerver
  • Registratie: Februari 2001
  • Niet online
Uhh, correct me if I'm wrong, maar maakt die zelf niet aan dat 137.56.0.0 over tun0 gaat? Zo nee, check dan eens ip route en zijn dev parameter, dan kan je hem forceren om oer device tun0 te gaan

Woonachtig Down Under. Ik negeer je insults niet, maar tegen de tijd dat ik ze lees zijn ze meestal niet relevant meer


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 22-01 08:08

TrailBlazer

Karnemelk FTW

het probleem is dat je nu nog niet weet welke adressen je gebruikt voor de applicatie. Het subnet wat je wil routeren zie ik nog nergens staan. De destination voor je tunnel is bekend. Jouw lokale ip adres is bekend maar het subnet of subnets die je nodig hebt moet je eerst achter zien te komen.
Eventueel kan je even met netstat -an kijken welke sessie je allemaal open hebt staan als je bezig bent.

  • Zwerver
  • Registratie: Februari 2001
  • Niet online
?? Daar staat toch zijn subnet Trail?

Woonachtig Down Under. Ik negeer je insults niet, maar tegen de tijd dat ik ze lees zijn ze meestal niet relevant meer


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 22-01 08:08

TrailBlazer

Karnemelk FTW

Zwerver schreef op donderdag 07 september 2006 @ 22:12:
[...]


?? Daar staat toch zijn subnet Trail?
8)7 zat enkel naar zijn route tabel te kijken. 8)7 Dan klopt het inderdaad wat je hebt neergezet. Overigens wel vreemd dat ze het zo hebben geconfigureerd. Als het inderdaad die Cisco VPN client is hadden ze beter split tunneling kunnen configuren. Hierbij wordt een policy naar de client gepushed die zegt dat enkel een beperkt aantul subnets via de tunnel gerouteerd moeten worden. Scheelt de UNI een hoop bandbreedte
Jaja vandaag CCSP geworden

  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 19-01 10:48
Ik heb geen `ip` commando. Om routes aan te duiden gebruik ik `route` (dacht dat dit de Linux "standaard" was?).

@Zwerver: Anyway, ik heb geprobeerd om jouw commando's te vertalen naar de route versie:
route add -host 137.56.127.10 gw 192.168.1.1
route add -net 137.56.0.0 gw 137.56.127.10
route add default gw 192.168.1.1

Maar dat werkt niet. Ik krijg wel toegang tot het uvt netwerk, maar dat is met mijn eigen Chello-ip. tweakers.net is onbereikbaar. Ik krijg overigens wel deze melding: SIOCADDRT: Invalid argument

Dit is mijn route table:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
137.56.127.10   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0


Dus waarschijnlijk moet ik mijn vpn-ip ook ergens naar toe routen, maar ik zou niet weten waar naar toe.

@TrailBlazer: ze geven drie keer niks om bandbreedte op de universiteit. Ik beheer daar met een aantal anderen de web/mysql server voor studenten en verenigingen. We mogen onbeperkt bandbreedte aanbieden, en daarnaast hebben we ook ubuntu gehost (de eerste van NL, nu heeft Surfnet het overgenomen van ons). Deze mirror trok meer dan 100GB per maand if I remember correctly. En dat is dan slechts één server...

[ Voor 20% gewijzigd door HarmoniousVibe op 08-09-2006 00:30 ]

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW


  • engelbertus
  • Registratie: April 2005
  • Laatst online: 29-01 09:24
waarom gebruik je dat progje, kun je niet zelf een route opzetten?

volgens mij stelt dat progje je default zo in dat alles via de tunnl gaat terwijl dat niet de bedoeling is?
heb je je progje wel goed geconfigureerd?

als je met dat route programma nou eens je default route verandert in de normale, en de routes voor de rest instelt opje tunnel iface?
vind het een beetje rare routetabel met vpn, dus ik denk dat je vpn progje gewoon iets anders probeert te doen dan jij denkt dat ie doet.

al je verkeer gaat nl default via de default gateway, tenzij er een route is ingesteld, daat kun ej doen voor hele subnets tegelijk, dus bijvoorbeeld alles naar 137.0.0.0 en netmask 255.0.0.0 via de tunnel. dan gaat de rest via de default gateway

  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 19-01 10:48
Het probleem zit em volgens mij hier: Ik moet het verkeer over één interface naar mijn router sturen. Óf via eth0, óf via tun0. En afhankelijk daarvan gaat het verkeer over de VPN tunnel of niet. Maar dat kan ik niet aangeven in de routing table, omdat je niet kunt zeggen: route add -net 137.56.0.0 gw $mijnvpnaddr

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW


  • engelbertus
  • Registratie: April 2005
  • Laatst online: 29-01 09:24
volgens mij si dat niet waar je stuurt al je verkeer gewoon naar de default. behalve verkeer voor de UvT
dit doe je door voor de UvT een route op te geven. deze route moet door de tunnel lopen en dus maak je een route voor de tun0 voor dat subnet van de UvT

netzoals dat is gedaan in je startpost, alleen staat daar je defult ook op de UvT gerouteerd. en dat is niet juist.

de tun0 zorgt ervoor dat je ip verkeer ingepakt wordt in een extra laagje dat dus nu verstuurd word via je default gateway,m en dus gewoon normaal door je router, naar de router /internet adres van de UvT

die haalt je ip pakketten uit het extra laagje, en kan zo dus zien voor welk adres het bestemd is. is het dan voor de UvT ( dus een lokaal adres volgens de routetabel daar) dan gaat het het eigen netwerk op. is het een ander ( internet) adres, dan wordt het daar weer via de daar geldende default gateway terug het internet opgestuurd,
dat is dus wat er nu met je internet verkeer gebeurt. waardoor connecties dus opeens anders lopen en opnieuw moeten worden opgezet. ze lopen nu immers opeens via andere serrvers. en misschien ligt er nog ergens een NAT dwars.

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 22-01 08:08

TrailBlazer

Karnemelk FTW

LB06 schreef op vrijdag 08 september 2006 @ 00:23:
Ik heb geen `ip` commando. Om routes aan te duiden gebruik ik `route` (dacht dat dit de Linux "standaard" was?).

@Zwerver: Anyway, ik heb geprobeerd om jouw commando's te vertalen naar de route versie:
route add -host 137.56.127.10 gw 192.168.1.1
route add -net 137.56.0.0 gw 137.56.127.10
route add default gw 192.168.1.1

Maar dat werkt niet. Ik krijg wel toegang tot het uvt netwerk, maar dat is met mijn eigen Chello-ip. tweakers.net is onbereikbaar. Ik krijg overigens wel deze melding: SIOCADDRT: Invalid argument

Dit is mijn route table:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
137.56.127.10   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0


Dus waarschijnlijk moet ik mijn vpn-ip ook ergens naar toe routen, maar ik zou niet weten waar naar toe.
Ik zie ook geen more specific route voor de UNI in je route tabel staan. Moet het niet
route add -net 137.56.0.0 netmask 255.255.0.0 gw 137.56.127.10
zijn

  • engelbertus
  • Registratie: April 2005
  • Laatst online: 29-01 09:24
wie heeft dioe route tabel gemaakt voor als je een vpn wilt opzetten? ik reageer hier dus op je eerste post. zou ik reageren op je laatt geposte routete\abel, dan is die ook fout omdat het verkeer voor de tunnel via eth0 wordt gerouteerd, terwijl dat dus tun0 moet zijn. in je laatste post wil je toch immers gebruik maken van een tunnel, maar gebruik je heel het tun0 interface niet.

heb je dat zelf gedaan? of dat vpn programma?
want daarin staan gewoon verkeerde dingen. daar ligt het aan, het lijkt er dan op dat je wel ongeveer weet wat je wilt, maar dta je dit niet goed doet

de eerste regel stuurt namelijk verkeer voor de tunnel naar je router, deze regel vindt ik zelf wat dubieus, maar ik ken de werking van die tun0 niet. die heeft hem blijkbaar nodig.

de tweede regel zegt dat verkeer voor het eigen netwerk niet gerouteerd hoeft te worden maar gewoon lokaal wordt afgehandeld. dit kan statisch, waarbij pc een vast ip hebben, of via een router, maar dat verkeer redt zich in beide gevalen zelfstandig op je lokale netwerk, het wordt gewoon gezien door de overige lokale machines, of door de router die het doorstuurt naar de juiste lan-poort

de derde regel stuur al het andere verkeer door de tunnel.
dat moet je dus splitsen in normaal verkeer en verkeer dat via de UvT moet lopen. het normale verkeer gaat naar je router, die daar weer opsplitst in internetverkeer, en verkeer voor je andere pc, ( lokale netwerk) ook het verkeer naar de uvt gaat door je outer en wordt door je router naar de andere kant van de tunnel gestuurd, de publieke vpn server van de uvt dus

de tunnel is een interface die verder is gemaakt door dat programm en doet dus achter de schermen iets met jou pakketje, in dit geval dus een xtra routeringslaagje op je paketten doen, en vervolgens gewoon naar de router sturen die het naar de publieke vpn server van de UvT stuurt via je router.

de laatste regel is dus fout omdat hij al het overige verkeer (default) door de tunnel stuurt en dat is fout hij moet slechts het verkeer voor het subnet van de UvT door de tunnel sturen.
en de default moet gewoon al het andere verkeer routeren volgens de regels in de router. verkeer vioor internet naar de wan poort, verkeer voor lokale pc via lokale lan poorten of wifizender. de default moet dus hetzelfde zijn als zonder vpn:

het kan zijn dat je dus eerst de default route moet verwijderen, en een nieuwe moet ingeven:
code:
1
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

zo moet die regel er uit zien in je tabel

de regel die je verkeer naar de UvT naar de vpn server van de uvt stuurt moet er dan ongeveer zo uit zien:
code:
1
137.56.0.0    vp0182.uvt.nl   255.255..0.0         UG    0      0        0 tun0



je ziet dan dat het verkeer door de tunnel als gateway vp0182.uvt.nl gebruikt. dit is de gateway op de UvT dus dan zou het moeten werken.

[ Voor 27% gewijzigd door engelbertus op 08-09-2006 10:13 ]


  • Zwerver
  • Registratie: Februari 2001
  • Niet online
engelbertus schreef op vrijdag 08 september 2006 @ 09:57:
wie heeft dioe route tabel gemaakt voor als je een vpn wilt opzetten? ik reageer hier dus op je eerste post. zou ik reageren op je laatt geposte routete\abel, dan is die ook fout omdat het verkeer voor de tunnel via eth0 wordt gerouteerd, terwijl dat dus tun0 moet zijn. in je laatste post wil je toch immers gebruik maken van een tunnel, maar gebruik je heel het tun0 interface niet.

heb je dat zelf gedaan? of dat vpn programma?
want daarin staan gewoon verkeerde dingen. daar ligt het aan, het lijkt er dan op dat je wel ongeveer weet wat je wilt, maar dta je dit niet goed doet

de eerste regel stuurt namelijk verkeer voor de tunnel naar je router, deze regel vindt ik zelf wat dubieus, maar ik ken de werking van die tun0 niet. die heeft hem blijkbaar nodig.

de tweede regel zegt dat verkeer voor het eigen netwerk niet gerouteerd hoeft te worden maar gewoon lokaal wordt afgehandeld. dit kan statisch, waarbij pc een vast ip hebben, of via een router, maar dat verkeer redt zich in beide gevalen zelfstandig op je lokale netwerk, het wordt gewoon gezien door de overige lokale machines, of door de router die het doorstuurt naar de juiste lan-poort

de derde regel stuur al het andere verkeer door de tunnel.
dat moet je dus splitsen in normaal verkeer en verkeer dat via de UvT moet lopen. het normale verkeer gaat naar je router, die daar weer opsplitst in internetverkeer, en verkeer voor je andere pc, ( lokale netwerk) ook het verkeer naar de uvt gaat door je outer en wordt door je router naar de andere kant van de tunnel gestuurd, de publieke vpn server van de uvt dus

de tunnel is een interface die verder is gemaakt door dat programm en doet dus achter de schermen iets met jou pakketje, in dit geval dus een xtra routeringslaagje op je paketten doen, en vervolgens gewoon naar de router sturen die het naar de publieke vpn server van de UvT stuurt via je router.

de laatste regel is dus fout omdat hij al het overige verkeer (default) door de tunnel stuurt en dat is fout hij moet slechts het verkeer voor het subnet van de UvT door de tunnel sturen.
en de default moet gewoon al het andere verkeer routeren volgens de regels in de router. verkeer vioor internet naar de wan poort, verkeer voor lokale pc via lokale lan poorten of wifizender. de default moet dus hetzelfde zijn als zonder vpn:

het kan zijn dat je dus eerst de default route moet verwijderen, en een nieuwe moet ingeven:
code:
1
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

zo moet die regel er uit zien in je tabel

de regel die je verkeer naar de UvT naar de vpn server van de uvt stuurt moet er dan ongeveer zo uit zien:
code:
1
137.56.0.0    vp0182.uvt.nl   255.255..0.0         UG    0      0        0 tun0



je ziet dan dat het verkeer door de tunnel als gateway vp0182.uvt.nl gebruikt. dit is de gateway op de UvT dus dan zou het moeten werken.
Kerel, anders kijk je even wat er al staat voordat je een heel verhaal zonder hoofdletters neerknalt....

Woonachtig Down Under. Ik negeer je insults niet, maar tegen de tijd dat ik ze lees zijn ze meestal niet relevant meer


  • engelbertus
  • Registratie: April 2005
  • Laatst online: 29-01 09:24
nou zwerver, anders doe je het zelf effe in 1 keer goed he?

ik heb het wel gelezen uiteraard, maar begrep dat het nog steeds niet gelukt is. dus probeer ik maar even van begin tot eind uit te leggen wat er mis gaat en wat er moet gebeuren om het goed te krijgen
dat heb ik jou nog niet zien doen he. ip route add .. via?
waar heb je het dan bijvoorbeeld over.. zoek eerst maar in een boek dat van toepassing is op de distributie van de topicstarer wat het wel moet zijn voor je zoiets vaags als dat neerknalt.

mijns inziens klopt die routetabel dus niet en heeft de topicstrater dat of zelf gedaan of dat progje dat hij gebruikt heeft dat voor hem gedaan. in beide gevallen wil hij het anders maar snapt er de ballen van.

en wat heb jij hem dan uitgelegd? en hoe is hij daarmee geholpen?

en eehm DENK NA voordat je een hele post van iemand volledig quote, als je die post zonde van de ruimte vond, want dat schiet natuurlijk niet op he

en hoofdletters..
tja er staan punten. doe daar iets mee zou ik zeggen.

  • Zwerver
  • Registratie: Februari 2001
  • Niet online
engelbertus schreef op vrijdag 08 september 2006 @ 11:31:
nou zwerver, anders doe je het zelf effe in 1 keer goed he?

ik heb het wel gelezen uiteraard, maar begrep dat het nog steeds niet gelukt is. dus probeer ik maar even van begin tot eind uit te leggen wat er mis gaat en wat er moet gebeuren om het goed te krijgen
dat heb ik jou nog niet zien doen he. ip route add .. via?
waar heb je het dan bijvoorbeeld over.. zoek eerst maar in een boek dat van toepassing is op de distributie van de topicstarer wat het wel moet zijn voor je zoiets vaags als dat neerknalt.

mijns inziens klopt die routetabel dus niet en heeft de topicstrater dat of zelf gedaan of dat progje dat hij gebruikt heeft dat voor hem gedaan. in beide gevallen wil hij het anders maar snapt er de ballen van.

en wat heb jij hem dan uitgelegd? en hoe is hij daarmee geholpen?

en eehm DENK NA voordat je een hele post van iemand volledig quote, als je die post zonde van de ruimte vond, want dat schiet natuurlijk niet op he

en hoofdletters..
tja er staan punten. doe daar iets mee zou ik zeggen.
Schat :* Het commando ip is gewoon aanwezig en anders heel makkelijk bij te installeren op elke redelijk up2date distro. Voor jou (e.a. die het blijkbaar niet kennen):

[rvdb@rintintin 35 rvdb]$ apt-cache search iproute
iproute - Professional tools to control the networking in Linux kernels


Die commands die ik gegeven heb leggen de route op de juiste manier aan, dat jij het houdt bij de outdated route commando's mag je zelf weten.
Voor de TS: zorg ervoor dat je route table op orde komt, je hebt nl nodig:

1 default route naar je huis gateway
1 route die het UvT netwerk over je openvpninterface (tun0) gooit.

Dit aanmaken kan je doen met ip of met route, beide werkt maar de eerste is gewoon uitgebreider.


offtopic:
Na een punt hoort een hoofdletter anders leest het voor geen meter. Daarbij hoef je mij echt niet te gaan vertellen hoe ik al dan niet moet quoten, dat weet ik best wel.

Woonachtig Down Under. Ik negeer je insults niet, maar tegen de tijd dat ik ze lees zijn ze meestal niet relevant meer


  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 19-01 10:48
Het zit zo: dat vpnc prog roept bij het connecten een script aan. Dit is gewoon een bash-script dat ik kan customizen. Maar ik moet de routes perse vanuit dat script aanmaken, omdat vpnc mijn vpn-ip teruggeeft aan dat script, en ik het dus niet anders dan via het script kan bepalen. Maar goed, dat script zet middels ifconfig mijn tun0 interface op en maakt de routes aan.

Hier het default script: http://svn.unix-ag.uni-kl.de/vpnc/trunk/vpnc-script

@Zwerver: Ik heb do_connect nu zo aangepast dat hij alleen do_ifconfig uitvoert en vervolgens die drie routes van zwerver ingeeft, via het inmiddels gevonden ip commando. Maar het gevolg is dan dat ik deze meldingen krijg:
RTNETLINK answers: Network is unreachable
RTNETLINK answers: File exists


De route tabel:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
137.56.127.10   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0


Kortom, er gaat niks over de tun0 interface.

*mislukte route pogingen verwijderd*

@Engelbertus:
ip route add 137.56.0.0/16 via "$mijnvpnip"

Deze werkt wel, maar de route lijkt niet over de tunnel te lopen. Ik heb nl even een echo $_SERVER['remote_addr']; scriptje online gezet op een 137.56.x.x server, maar als ik die pagina via het ip bezoek, krijg ik nog steeds mijn chello ip te zien.

route table:
137.56.0.0      137.56.xx.yy    255.255.255.255 UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

[ Voor 97% gewijzigd door HarmoniousVibe op 08-09-2006 19:04 ]

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW

Pagina: 1