
Oorspronkelijk geplaatst door
visser
Veel lezen & proberen ;-) En maak een tekeningetje voor je zelf.
Begin met één IP adres wat je van en via B naar A wilt routeren.
Maak op de A server een extra loopback (lo1) met dit IP adres.
(hier doe ik de aanname dat je die ip adressen direct op de tunnel-server gaat gebruiken, niet nog op een andere machine van locatie A)
Op de B server zet je een statische route voor dit IP adres door het tunnel interface.
Is de instelling van je provider zodanig dat die verwacht dat alle adressen van de B server "op het ethernet" zitten ?
Zo ja, dan zou het kunnen dat je ook proxy arp aan moet zetten op het ethernet interface van die server.
Nu je zo ver bent, kan het nog niet werken, maar kun je al iets testen.
Verkeer van "buiten" moet nu naar server B , en dan via de tunnel naar server A gaan.
Probeer dat, en kijk met tcpdump (of tethereal) of dat tot zover lukt.
Wat nog niet goed gaat, is dat antwoord verkeer van dat IP adres op server A niet via de tunnel terug gaat.
Dat moet je nog op server A oplossen.
Je kunt dat, zo te zien, puur met ip route oplossen.
http://linux-ip.net/html/routing-rpdb.html
je maakt een extra routing table aan, waarbij de default route van deze table naar de tunnel wijst.
En je zorgt dat verkeer afkomstig van het lo1 interface (of op basis van source ip) deze niet-default route table gebruikt.
Je hebt, denk ik, totaal geen NAT nodig in dit verhaal. Alleen tegen de tijd dat de hele zaak zover werkt moet je kijken of ICMP berichten van "server B" niet het (private) IP adres van het tunnel interface gebruiken. (server B zal nl. icmp fragmentation needed gaan terugsturen bij pakketten groter dan de tunnel MTU).
Verder moet je natuurlijk in je iptables voldoende open hebben staan om dit te laten werken.
De tunnel zelf is aan de buitenkant alleen maar GRE (protocol 47).
In tegenstelling tot de tunnel setup heb ik niet meteen een cut&paste klaar voorbeeldje van de multiple-route table setup.
Genoeg "min of meer vergelijkbare" dingen om te weten dat dit de richting is, maar het lees,google, test en probeer werk voor dit specifieke scenario moet je hier zelf doen.
Wat je wilt bereiken is dat verkeer op server A van- en naar IP adressen op server A die van "locatie B" afkomstig zijn, via de GRE tunnel naar locatie B gestuurd wordt, en niet "direct" naar buiten.
Als je verkeer met adressen van locatie B op locatie A 'direct' naar buiten stuurt is dat feitelijk IP spoofing, en een goede ISP zal dat blokkeren.