OpenVPN配置静态密钥(static-key)验证

由于OpenVPN的证书方式采用了TLS握手机制,而TLS已经受到严重干扰(不论是TCP还是UDP),已不能在在国内使用。但OpenVPN还可以采用静态密钥(static-key)的方式,相对于证书方式,static-key不需要TLS握手,不易被干扰,缺点也显而易见,那就是只能配置一对一的网络,如果要配置一对多的网络,需要启动多个OpenVPN进程。

一,服务端设置
生成static-key,并在配置文件中启用之

$ openvpn --genkey --secret static.key

然后把static.key和主配置文件放入同一目录

$ vim /etc/openvpn/server.conf  #配置主配置文件如下
dev tun
port 8899
proto tcp-server
ifconfig 10.152.10.1 10.152.10.2
secret static.key
 
keepalive 10 60
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 4
push "redirect-gateway def1 bypass-dhcp" 

由于OpenVPN默认使用UDP的方式传输,如果想改用TCP方式,需要加上“proto tcp-server”一行(这里未启用,已经使用分号注释掉了);
这里我去掉了push dns的配置项,因为客户端总是无法接收到PUSH过来的dns option,原因未知,所以干脆把DNS写进客户端的配置文件算了

$ iptables -t nat -A POSTROUTING -s 10.152.10.0/24 -j SNAT --to-source 公网IP
$ /etc/init.d/iptables save
$ /etc/init.d/iptables restart

启动OpenVPN服务
$ /usr/sbin/openvpn --config /etc/openvpn/server.conf > /dev/null 2>&1 &

二,客户端设置
仅需要把client.ovpn和static.key文件放入OpenVPN的config目录中即可

编辑客户端配置文件(一般为.ovpn结尾)

remote 公网IP 8899
dev tun
proto tcp-client
ifconfig 10.152.10.2 10.152.10.1
secret static.key
comp-lzo
verb 3
redirect-gateway def1
dhcp-option DNS 8.8.8.8
dhcp-option DNS 8.8.4.4

如果服务端启用了TCP传输,那么也需要启用“proto tcp-client”一行(这里未启用)

=========================================
2015.02.06补充:
公司网络用的是电信通的宽带,发现在公司OpenVPN怎么也连接不上了,简单检测了一下,能PING通远程网关,但DNS查找失败。使用tracert 8.8.8.8检测了一下,发现数据包从远程网关跳到美国以后,并不能再返回网关,而是返回到一个电信通的IP,进尔跳转到帝都电信的IP上了。因此联想到,是不是电信通干扰了UDP方式的传输。于是把UDP换成了TCP方式,发现正常了。。
故,虽然TCP稍慢一些,但为了连接更可靠,还是老老实实用TCP吧。

发表评论

您的电子邮箱地址不会被公开。