话说这标题意外的微妙呢……其实相当一段时间之前就已经弄好的,只是最新更新了trunk的固件,决定重新写一次而已。
在部署的过程中经历了不少曲折,可是最后终究还是做好了。还是外国人的东西靠谱,找到的几分中文教程里面的配置文件完全不给力啊,最后还是在官方Wiki里面找到能用的教程。
http://wiki.openwrt.org/doc/howto/vpn.openvpn
真是一份优秀的教程啊,其他平台的部署也可以略作参考。
下面是咱的人手翻译,说是这样说,其实也只是把大部分的命令弄过来而已……
—————————————–首先是服务器的配置————————————–
首先是安装软件包
opkg update
opkg install openvpn openvpn-easy-rsa
然后是稍微改一下easy-rsa的配置文件(不过如果你对手动签署证书比较熟悉的话也可以手动)
vi /etc/easy-rsa/vars
在文件底部添加环境变量
export KEY_COUNTRY="US"
export KEY_PROVINCE="TX"
export KEY_CITY="Houston"
export KEY_ORG="My Cool Place"
接着是签署证书,一共3份,根证书,服务器证书,客户证书。签署的过程需要填写一些信息,自己看着填,详细可以参考这个里面的说明
根证书
clean-all
build-ca
build-dh
服务器证书
build-key-server server
客户证书
build-key Jimmy
build-key Sara
build-key Soandso
...
将CA证书,服务器证书,dh密钥,服务器私钥拷贝到openvpn文件夹
cd /etc/easy-rsa/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn/
接着,把CA证书,客户端证书,dh密钥,客户端私钥拷贝到客户端。
然后,在luci(还是要有图形界面啊)的网络-接口-LAN里面,把tap0加到桥接里面,然后就不需要考虑转发啊什么的了,方便的很。
下面是server的配置文件,这个写在/etc/config/openvpn
config 'openvpn' 'lan'
option 'enable' '1'
option 'port' '1194'
option 'proto' 'udp'
option 'dev' 'tun0'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/server.crt'
option 'key' '/etc/openvpn/server.key'
option 'dh' '/etc/openvpn/dh1024.pem'
option 'ifconfig_pool_persist' '/tmp/ipp.txt'
option 'keepalive' '10 120'
option 'comp_lzo' '1'
option 'persist_key' '1'
option 'persist_tun' '1'
option 'status' '/tmp/openvpn-status.log'
option 'verb' '3'
option 'server_bridge' '192.168.1.1 255.255.255.0 192.168.1.200 192.168.1.219'
接着是防火墙啊,dhcp啊之类的,默认就可以了。
再贴一个通用版本的config,这个可以直接用openvpn来运行而不必依靠luci
port 1194
proto tcp
dev tun
### Certificate and key files
ca /etc/easy-rsa/keys/ca.crt
cert /etc/easy-rsa/keys/server.crt
key /etc/easy-rsa/keys/server.key
dh /etc/easy-rsa/keys/dh1024.pem
server 192.168.30.0 255.255.255.0
push "route 0.0.0.0 0.0.0.0"
push "dhcp-option DNS 10.1.254.250" # Change this to your router's LAN IP Address
client-to-client
### (optional) compression (Can be slow)
comp-lzo
persist-key
persist-tun
verb 3
keepalive 10 120
————————————————–接下来是客户端(OpenWrt)—————————————
配置文件:
client
tls-client
dev tun
proto tcp
remote <server address> 1194 # 改成服务器的IP
resolv-retry infinite
nobind
persist-tun
persist-key
ca ca.crt #CA证书,可以改成绝对路径,下同
cert Jimmy.crt
key Jimmy.key
dh dh1024.pem
comp-lzo
verb 3
然后可以用
openvpn --config 配置文件 --daemon
运行客户连接
另外原文还有Windows版的Client配置文件,有兴趣的可以过去看看。