Digi的无线LTE路由器是支持4G,5G无线上网的工业级和企业级路由器,和国内普通的无上线网路由器相比,它多了不少功能。您可能任意设置LAN口,WAN口,Wifi接口,LTE Modem接口的功能,它们都可以作为内网或外网接口,也可任意桥接使用;可以跑自定义的python程序来连接云;支持串口当设备口或console来对其它设备进行带外管理;在VPN支持上,不仅支持IPsec,还支持OpenVPN,甚至可以配合stunnel和peyoot/pvpn来通过自有的海外vps实现科学上网等。
和采用开源openwrt系列的路由器不一样,Digi的路由器是企业级的DAL系统,可配置的功能多了,因此也相比简单功能的路由器更复杂些。本文将探讨客户端和服务端全使用Digi路由器OpenVPN的配置方法,也可适用于支持openvpn的客户端设备。有关使用已有的证书和密钥来配置IOS或Android的客户端不在本文的探讨范围,如有需要请参考:Configuring an OpenVPN server for iOS and Android clients
- OpenVPN 服务端配置
在System>Device Configuation>VPN>OpenVPN配置项上,
添加一个OpenVPN Server服务,并命名为testOVPN,选择类型(tun或tap),指定防火墙的Zone为internal,指定OpenVPN的网络地址(需和本地LAN不同),并启用Server managed certificates,也就是服务端管理证书,记得选中Enable来启用这个OpenVPN Server。
在Authentication>Groups内,新添加一个GroupOVPN组,用来授权许可openvpn连接的用户。这个组需要开启OpenVPN Access,并把上面的OpenVPN tunnel添加好。
在Users里,添加使用openvpn的用户,在Group里选择上面新创建的GroupOVPN组,并设置用户名和密码,启用即可。如果您不想使用用户名密码来交互登陆,可以配置ssh key使用。
- OpenVPN客户端
客户端可以在Status>Openvpn>Servers内下载client的配置模板,然后在模板的基础上修改配置(主要是IP地址),并应用在windows或Linux等客户端机器上,即可使用。
注意,默认配置中,使用auth-user-pass 配置项,这需要在连接时输入用户名和密码,您也可以把密码存成文件,第一行是用户名,第二行是密码,文件名起个如passfile,这样就可以用下面配置来避免交互式输入用户名密码。在Linux中,这个passfile应放在/etc/openvpn/client目录下
auth-user-pass passfile
从WAN口建立openvpn连接
本次测试版本固件为21.11,后续不同固件版本有可能简化相关的操作。
从WAN口连接VPN,并连到原来的LAN口网络,有几个地方需要配置:
1. 需要在OpenVPN的高级选项中指定使用的网卡为本地网卡,如–loacal x.x.x.x ,这里x.x.x.x为WAN口IP, 并推送openvpn链路为默认网关,比如下面设置:
2. 需要配置一条端口转发的防火墙规则,把来自openvpn的包转发到LAN口上
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.11.0/24 -j MASQUERADE
使用TCP协议
如果要在OpenVPN中使用tcp协议,正确的处理方法包括:
1. 添加TCP端口的防火墙设置
这需要配置一条custom rule的防火墙规则,比如1194端口,在firewall>custom rules里添加并启用 “iptables -I INPUT -p tcp –dport 1194 -j ACCEPT”。
2. 配置Advanced Options,指定tcp服务
OpenVPN parameters实际上可以理解为命令行的配置选项,输入“–proto tcp-server”,并启用。
进阶篇: 为特定用户分配固定的IP地址
这里演示的方法,不但对IX20适用,对使用openvpn的服务器也同样可以用这个配置方法,以最简单的以用户名来获取固定IP为例:
关于MTU
为了提高效论,需要注意MTU问题。MTU是以太网一帧的最大长度,由于历史原因,1500字节是默认值,超过这个长度在IP层就会被分包。为了提高效率,在多层路由嵌套的网络,可能要找出正确的MTU以便提高效率
可以用ping来检查,如果发现下面命令ping不通,就要考虑减小MTU设置。 通常地,ping包的payload之前有20个字节的IPV4 Header和8个字节的ICMP Header。所以测试1500变成测试1472字节。把tun-mtu设置成合适的值可以提高带宽和效率。
windows: ping -l 1472 -f 1.1.1.1 Linux: ping -c 4 -s 1472 -M do 1.1.1.1
例如:探测到的数据包大小是1464,那么加上28字节,最终MTU=1492字节。一般原则是,寻找ISP支持的最大MTU,然后在每个路由环节,到本机都设置为该MTU值,最后OpenVPN也设置tun-mtu为一样的值,这样效果最佳。