【注意】最后更新于 June 12, 2021,文中内容可能已过时,请谨慎使用。
苹果升级iOS10和Mac OS X Sierra有一段时间了,我的iPhone一不小心就中招升级了,导致我在外边玩游戏速度特别差,也不能拨号回家。
之前尝试着装个L2tp服务器,发现问题多多,始终不能成功;正好这次放假看到了知乎这个答案,所以就尝试着按照这个方式装一个OpenVPN服务器。
1、安装相应的软件:
1
2
3
|
opkg update
opkg install openvpn-polarssl
opkg install openvpn-easy-rsa
|
原文说的KEY_CN就是被注解掉的,所以不用执行相应的sed。
2、修改/etc/easy-rsa/vars,把原文所说的
1
2
3
4
5
6
|
KEY_SIZE=2048
export KEY_COUNTRY=CN
export KEY_PROVINCE=Canton
export KEY_CITY=city_name
export KEY_ORG=org_name
export KEY_EMAIL=email_address
|
都修改一下,然后执行
1
2
|
source /etc/easy-rsa/vars
clean-all
|
来做好生成证书的准备。
3、执行命令生成证书
1
2
3
4
|
pkitool –initca
pkitool --server 服务端名称
pkitool 客户端名称0
pkitool 客户端名称1
|
理论上有一个客户端就需要生成一套客户端的证书,当然,你也可以按照我的一会列出的参数,一套证书多个客户端使用。
4、执行build-dh
来生成Diffie Hellman参数
5、生成ta.key
1
|
openvpn --genkey --secret /etc/easy-rsa/keys/ta.key
|
6、编辑/etc/config/network,修改lan下的option ifname ,增加tun0
7、修改/etc/config/openvpn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
config openvpn my-server
option enabled 1
option local 0.0.0.0
option port 1194
option proto tcp
option dev tun
option ca /etc/easy-rsa/keys/ca.crt
option cert /etc/easy-rsa/keys/my-server.crt
option key /etc/easy-rsa/keys/my-server.key
option dh /etc/easy-rsa/keys/dh2048.pem
option server "172.8.0.0 255.255.255.0"
list push "redirect-gateway def1"
list push "dhcp-option DNS 172.8.0.1"
list push "dhcp-option WINS 172.8.0.1"
option client_to_client 1
option duplicate_cn 1 #允许一个证书多个客户端使用
option keepalive "10 120"
option tls_auth "/etc/easy-rsa/keys/ta.key 0"
option tls_server 1
option comp_lzo yes
option max_clients 100
option persist_key 1
option persist_tun 1
option status /tmp/openvpn-status.log
option log /tmp/openvpn.log
option verb 3
option mute 20
|
8、添加路由做测试 iptables -t nat -A POSTROUTING -s 172.8.0.0/24 -j MASQUERADE
9、添加路由,保证以后重启能正常使用iptables -A FORWARD -s 172.8.0.0/24 -j ACCEPT
10、编辑/etc/config/firewall
,在wan开放1194端口
1
2
3
4
5
6
7
8
|
config rule
option enabled '1'
option target 'ACCEPT'
option src 'wan'
option name 'Allow-WAN-OpenVPN-Input'
option family 'ipv4'
option proto 'tcp'
option dest_port '1194'
|
11、重启服务生效
1
2
|
/etc/init.d/openvpn enable
reboot(or /etc/init.d/network restart;/etc/init.d/firewall restart;/etc/init.d/openvpn start)
|
客户端只要把相应的ca.crt,ta.key,客户端.crt,客户端.key下载下来,编辑文本文件vpn.ovpn,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
client
proto tcp
remote 服务器ip 1194
dev tun
comp-lzo
nobind
ca ca.crt
cert 客户端.crt
key 客户端.key
tls-auth ta.key 1
route-delay 2
route-method exe
verb 3
|
如果需要拨号后使用代理,只需要添加如下参数:
1
2
|
dhcp-option PROXY_HTTP 代理ip 代理端口
dhcp-option PROXY_HTTPS 代理ip 代理端口
|
如果要使用自动代理,添加如下参数:
1
|
dhcp-option PROXY_AUTO_CONFIG_URL http://example.tld/proxy.pac
|
不过上述几个参数并非所有openVPN客户端支持。
update-2017-11-12:
经过升级到openwrt 15.05.1后,发现openvpn-polarssl出现了segment fault,在路由器上没法调试,改用openvpn-openssl后,发现没有问题,配置等无需修改,完全兼容。
文章作者
尚弟
上次更新
2021-06-12
(7e4096a)
许可协议
© Copyright 2021 by 尚弟