LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Networking (https://www.linuxquestions.org/questions/linux-networking-3/)
-   -   How do I route my internet traffic over tun0? (https://www.linuxquestions.org/questions/linux-networking-3/how-do-i-route-my-internet-traffic-over-tun0-798477/)

nimnull22 03-28-2010 08:34 PM

Yes, then you do "traceroute 4.2.2.3" - you see that packets ARE TRYING to go through tun0. It doesn't mean they are reach other side.

First of all you HAVE to be able to ping other side of your tunnel. So, you have to ping 10.8.0.2 from 10.8.0.1, and 10.8.0.1 from 10.8.0.2. Your OpenVPN software has to create tunnel before.
When you get this, you can add route for OpenVPN IP, everything else will use GW on other side of the tunnel.
But, es I said before, first of all, the tunnel should work it self.

Right now, after you added "10.8.0.0/24 dev tun0 scope link" packets addressed to 10.8.0.x will definitely go to tun0. And if OpenVPN on other side works and connects to your computer you should "ping" its interface with IP=10.8.0.1.

FireRaven 03-28-2010 08:46 PM

Quote:

Originally Posted by nimnull22 (Post 3916053)
Yes, then you do "traceroute 4.2.2.3" - you see that packets ARE TRYING to go through tun0. It doesn't mean they are reach other side.

That's right, but they are getting through because traceroute is pinging successfully through 10.8.0.1 then all the way to the US Server of 4.2.2.0/24.

That is successfully when doing the "route add -net 4.2.2.0 netmask 255.255.255.0 dev tun0" command first.

nimnull22 03-28-2010 08:57 PM

In that case add route for IP of your computer B = 10.8.0.1, like:
route add -net <IP> netmask 255.255.255.255 dev eth0

Delete default route trough eth0.
Add default route through tun0:
route add -net 0.0.0.0 netmask 0.0.0.0 dev tun0

FireRaven 03-28-2010 09:22 PM

Ok I just got it working, from a fresh start this is what was needed:
Code:

root@ubuntu-vmguest:/opt# route add -net 114.77.31.26 netmask 255.255.255.255 gw 192.168.2.99 dev eth0
root@ubuntu-vmguest:/opt# route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.8.0.1 metric 99 dev tun0
root@ubuntu-vmguest:/opt# ip route show
114.77.31.27 via 192.168.2.99 dev eth0
10.8.0.1 dev tun0  proto kernel  scope link  src 10.8.0.2
192.168.2.200 dev eth0  scope link  src 192.168.2.11
192.168.2.150 dev ppp0  proto kernel  scope link  src 192.168.2.153
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.11
192.168.77.0/24 via 10.8.0.1 dev tun0
default via 10.8.0.1 dev tun0  metric 99
default via 192.168.2.99 dev eth0  metric 100
root@ubuntu-vmguest:/opt#

I just had to add a higher priority to 114.77.31.26 to route through eth0 (gateway 192.168.2.99) while let all other traffic route through tun0 (gateway 10.8.0.1) at a lower priority, therefor not breaking tun0. This is because 114.77.31.26 is the VPN gateway for tun0 so it needs to not route through tun0 (of course).

With that routing table shown all internet traffic routes through tun0 where only 192.168.2.0/24 and 114.77.31.26 route through eth0 (192.168.2.99).

Thanks for your help working this out nimnull22!

EDIT: I don't think the "gw 10.8.0.1" part is needed since 10.8.0.1 is the only peer on tun0

nimnull22 03-28-2010 09:56 PM

You can remove:
default via 192.168.2.99 dev eth0 metric 100

You do not need it any more.
And unfortunately you show your IP - it is not really good. I suggest to erase it.

fancylad 03-30-2010 03:19 PM

yes you are right. if you are setting a default route that uses the vpn connection then, by defualt, linux will try to push all traffic out this way. what if you first define a route for the vpn network so that eth0 can use this then add the default route using the vpn tunnel? Something like this:
Quote:

route add -net 4.2.2.1 netmask 255.255.255.255 gw 192.168.2.99
route add default gw dev tun0
This is assuming that 4.2.2.1 is the ip of the vpn gateway or whatever you wan to call it at the far end and 192.168.2.99 is the ip of your regular gateway for your eth0 connection. If this doesn't work try playing around with the first route add command. Remove the default gw altogether and make sure the route add command works so that any traffic destined for 4.2.2.1 is working and that no other traffic that is not on your local network is working. If this works then try adding the second route add command, defining a default gw that uses the tun0 interface.

EDIT: I guess you can ignore what I wrote. I didn't notice that this continued on a second page :p

FireRaven 03-30-2010 04:38 PM

Quote:

Originally Posted by fancylad (Post 3918305)
EDIT: I guess you can ignore what I wrote. I didn't notice that this continued on a second page :p

That's what I did and it worked :)
4.2.2.1 was just a test IP though. The other one was the global IP for the gateway, so adding that before the default route made it work.


All times are GMT -5. The time now is 03:03 AM.