对于有公网IP的两地可以很方便的通过IP+端口互相访问,然而很多情况下(比如家庭宽带)都没有公网IP。此时需要访问没有公网IP的设备需要通过公网IP转发。如果两地中某一方有公网IP,则可以在有公网IP的一方搭建OpenVPN服务,无公网IP的一方以客户端加入虚拟局域网实现两地设备互相访问。
一、网络拓扑
现有如下网络:
A地有动态公网IP(做了DDNS解析至域名:abc.com),B地有无公网IP,服务端和客户端均为ikuai路由。

二、服务端配置
需要注意的是在ikuai中搭建OpenVPN有严格的操作顺序,如果顺序不对可能造成服务端ping不通客户端的情况,ikuai官方给出的顺序如下:
- 配置服务端;
- 在服务端建立客户端账号;
- 在服务端设置静态路由;
- 最后客户端再进行拨号。
注:建议启用服务时也按此顺序依次打开。
1、配置服务端
服务端配置解析:
- 服务端口:选择一个未占用,且已放行的端口,此处采用52080端口;
- VPN网段:虚拟局域网的网段,此例设置为10.10.10.0;
- 隧道协议:按需选择,鉴于运营商对UDP流量QOS比较严重,此处选TCP;
- 隧道类型,拓扑类型,加密算法等配置项可以自由选择;但需要注意的是,在配置客户端时一定要与服务端一致。
- 推送路由:将路由信息推送给客户端,将A地局域网、B地局域网和VPN虚拟局域网网段均添加进去。

2、在服务端建立客户端账号
每个客户端需要设置一个账号+密码,用于客户端登录,每个客户端需要绑定一个固定的VPN虚拟局域网IP,此例中设置为10.10.10.31。

3、在服务端设置静态路由
服务端ikuai添加两个静态路由:
- 一个sovpn线路,指向目的地址192.168.31.0,即B地的局域网地址,网关为10.10.10.31即客户端ikuai的虚拟IP地址。
- 一个lan1线路,指向A地主路由网关,即将服务端(旁路由ikuai)的流量转发至主路由;如果服务端直接建在主路由上,这条不需要。

添加后总的路由表如下:

三、主路由配置
在A地的主路由上做端口转发,将VPN使用的52080端口转发出去:

在A地的主路由上设置静态路由:将发送至192.168.31.0(B地客户端)的流量指向,10.10.10.31(B地客户端网关)

四、客户端配置
客户端配置如下:
- 拨号名:称随便取一个,
- 服务器地址:如果有固定IP可以填固定IP,此例中服务端已做DDNS解析域名。
- 用户名和密码,填服务端建立的账号和密码。
- 其他项与服务端保持一致,包括证书、私钥。
- 最后将“服务器路由推送”选上。

五、网络测试
经过以上设置后,对网络进行测试:
- A地对B地:A地服务端(ikuai旁路由)和PCA,均能ping通B地的客户端(ikuai路由)及其下属的PCB。
- B地对A地:B地客户端(ikuai路由),能ping通A地服务端(ikuai旁路由);但是无法ping通A地PCBA,路由追踪到10.10.10.1(服务端ikuai旁路由)即断路。(注:此现象有可能是A地服务端或设备防火墙设置问题,欢迎各位在博客下方评论反馈测试结果)
- PCA访问网络时,将A地PCA的网关设置为192.168.11.86(旁路由ikuai地址)时,网络速度会有提升。
正文完