Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I have a local network on 192.168.1.0 with netmask 255.255.255.0. When I connect to a VPN though OpenVPN (as a client), it pushes a route for 192.168.1.0 that clobbers the existing one, making my local network inaccessible. I don't to access anything on 192.168.1.0 on the remote machine; I'd like to just ignore it, while accepting the other routes that are pushed. My client is Ubuntu 10.10.

How can I skip the one offending route?

share|improve this question

3 Answers 3

up vote 4 down vote accepted

Use the

--route-up --route-noexec

option in openvpn and completely ignore the routes being pushed to you, instead adding static routes to the specific hosts you want to access through the tunnel.

openvpn --route-noexec --route-up /tmp/myscript --config ./client.ovpn

where /tmp/myscript is

route add -host 192.168.1.69 gw ${route_net_gateway}

Something similar to that, I haven't actually tested this but it should work. You probably want to remove the routes when you disconnected as well.

share|improve this answer

Is your local network very big? It might be simplest just to renumber your network to a non-conflicting range.

Otherwise, you could wrap your openvpn startup command in a script that fixes the route after OpenVPN is started up.

share|improve this answer

Just add an identical route (as the one being pushed to you) to your OpenVPN config, e.g.

route 192.168.1.0 netmask 255.255.255.0 net_gateway

This will prevent OpenVPN from adding it's own route.

Alternatively, use a lower metric value for your route. This way both routes will be created, but the local one will be preferred.

P.S. Tested on ArchLinux/OpenVPN 2.3.5.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.