本文只讲解OpenVPN的路由设置。主要是通过配置OpenVPN的服务端,然后通过OpenVPN自动推送设置客户端的路由表。从而达到目的。

通过OpenVPN自动设置客户端的路由表,比较常见的需求就是两种情况:

<li>客户端除了指定网段通过本地线路外,其他的全部走VPN。

这种情况主要是客户端网络被严重严重的限制,限制到基本上只能访问VPN服务器,或者其他有限的网段/服务器。这种情况下默认把所有的访问都通过VPN来访问,把包括VPN服务器在内的可以访问的网段/服务器通过原有线路访问。

<li>客户端除了指定网段走VPN,其他的全部走本地线路。

比如翻墙的时候,我们希望某些被墙的网段/服务器通过VPN翻越,(可能)要慢一点(毕竟要通过国外的VPN服务器转一次嘛)。而其他的网段/服务器没有被墙挡住,自然可以通过走本地线路,快一些。

这里的本地线路是指客户端原来的线路。需要注意的是VPN服务器本身是要通过客户端原来的线路走,这一点OpenVPN自己会设置。我们这里设置的是除了VPN服务器本身之外的网段。

第一种情况的设置方法:

<li>首先,修改服务端的OpenVPN配置文件,将

;push “redirect-gateway def1 bypass-dhcp”

这一行前面的注释符号“;”去掉,使之生效。意思是将客户端的默认路由配置为VPN网络

<li>然后,在服务端OpenVPN配置文件中,手动增加需要走本地线路的网段,例如:

push “route 192.168.0.0 255.255.255.0 net_gateway”

表示将IP地址为192.168.0.0,子网掩码为255.255.255.0的网段(即192.168.0.1~192.168.0.254)的路由设置为系统原有默认路由。关于IP地址和子网掩码的知识,请自己搜索。

第二种情况的流程类似,但是设置方法相反。

  • 同样是修改redirect-gateway那一行,不过是要添加上注释符,或者干脆去掉。

  • 同样是通过push route……来手动添加网段,只不过这次添加的网段不是要走本地线路的,而是要走VPN线路的。

本文提供的是通过配置OpenVPN服务器配置文件,实现自动推送路由表到客户端的方法。这种方法的特点就是一劳永逸,缺点就是对于客户端而言不太灵活。如果每个客户端要配置不一样的话,建议还是直接修改客户端的路由表!