日度归档:2012年4月10日

在OpenWrt上部署OpenVPN服务器

话说这标题意外的微妙呢……其实相当一段时间之前就已经弄好的,只是最新更新了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加到桥接里面,然后就不需要考虑转发啊什么的了,方便的很。

guide.openvpn.inttab

guide.openvpn.tapbridge

下面是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配置文件,有兴趣的可以过去看看。