On Windows Vista, OpenVPN client fails to add route to OpenVPN server's tunnel address. After some try and error, I've found that this problem can be avoided by setting route metric much larger.
Example of this problem: openvpn.conf on server (NetBSD): dev tun0 server 169.254.0.0 255.255.0.0 proto tcp-server lport 443 dh /etc/dhparam.pem ca /etc/ca-cert.pem cert /etc/server-cert.pem key /etc/server-key.pem While OpenVPN server is running, 169.254.0.1 is set to tun0. openvpn.ovpn on client (Windows): client proto tcp-client nobind dev tun remote <address-of-server> rport 443 ca "C:\\mycert\\ca-cert.pem" cert "C:\\mycert\\client-cert.pem" key "C:\\mycert\\client-key.pem" If OpenVPN client is running on Windows XP Professional, route to 169.254.0.1 is added correctly like following routing table: C:\Documents and Settings\umezawa>route print (snip) =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.186.1 192.168.186.192 10 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 169.254.0.1 255.255.255.255 169.254.0.5 169.254.0.6 1 169.254.0.4 255.255.255.252 169.254.0.6 169.254.0.6 30 169.254.0.6 255.255.255.255 127.0.0.1 127.0.0.1 30 169.254.255.255 255.255.255.255 169.254.0.6 169.254.0.6 30 (snip) However, on Windows Vista Ultimate Edition, OpenVPN client fails to add the route as following output: Fri Jan 12 15:02:29 2007 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006 Fri Jan 12 15:02:29 2007 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. Fri Jan 12 15:02:29 2007 Attempting to establish TCP connection with <address-of-server>:443 Fri Jan 12 15:02:29 2007 TCP connection established with <address-of-server>:443 Fri Jan 12 15:02:29 2007 TCPv4_CLIENT link local: [undef] Fri Jan 12 15:02:29 2007 TCPv4_CLIENT link remote: <address-of-server>:443 Fri Jan 12 15:02:29 2007 [otm-idgw-server] Peer Connection Initiated with <address-of-server>:443 Fri Jan 12 15:02:31 2007 TAP-WIN32 device [Local Area Connection 2] opened: \\.\Global\{A5A61131-3E01-48F4-9ED6-23FD6F14649F}.tap Fri Jan 12 15:02:31 2007 Notified TAP-Win32 driver to set a DHCP IP/netmask of 169.254.0.6/255.255.255.252 on interface {A5A61131-3E01-48F4-9ED6-23FD6F14649F} [DHCP-serv: 169.254.0.5, lease-time: 31536000] Fri Jan 12 15:02:31 2007 Successful ARP Flush on interface [14] {A5A61131-3E01-48F4-9ED6-23FD6F14649F} Fri Jan 12 15:02:31 2007 ROUTE: route addition failed using CreateIpForwardEntry: One or more arguments are not correct. [if_index=14] Fri Jan 12 15:02:31 2007 Initialization Sequence Completed Fri Jan 12 15:03:31 2007 SIGTERM[hard,] received, process exiting and routing table is like: C:\Users\VistaUser>route print -4 (snip) IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.186.1 192.168.186.248 10 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 169.254.0.4 255.255.255.252 On-link 169.254.0.6 286 169.254.0.6 255.255.255.255 On-link 169.254.0.6 286 169.254.0.7 255.255.255.255 On-link 169.254.0.6 286 (snip) Route to 169.254.0.1 does not exist. Example patch for OpenVPN 2.0.9: [umezawa@sd3 ~]$ diff -ur orig/openvpn-2.0.9 patched/openvpn-2.0.9 diff -u -ur orig/openvpn-2.0.9/route.c patched/openvpn-2.0.9/route.c --- orig/openvpn-2.0.9/route.c Wed Apr 5 15:13:55 2006 +++ patched/openvpn-2.0.9/route.c Mon Dec 18 18:43:47 2006 @@ -1128,7 +1128,7 @@ fr.dwForwardProto = 3; /* PROTO_IP_NETMGMT */ fr.dwForwardAge = 0; fr.dwForwardNextHopAS = 0; - fr.dwForwardMetric1 = r->metric_defined ? r->metric : 1; + fr.dwForwardMetric1 = r->metric_defined ? r->metric : 100; fr.dwForwardMetric2 = ~0; fr.dwForwardMetric3 = ~0; fr.dwForwardMetric4 = ~0; I have tested metric value 1, 2, and 100. 1 and 2 causes the problem on my environment and 100 does not. I cannot understand why this patch avoid the problem... -------------------------------------------------------------------- UMEZAWA Takeshi (FAMILY Given) <umez...@iij.ad.jp> Internet Initiative Japan Inc. PGP fingerprint = E9B1 4E6F 5E5F 6487 B93D 3FC6 1ACF C167 9D68 3E90