openwrt下的openvpn client实现

2019年11月10日 阅读数:9104
这篇文章主要向大家介绍openwrt下的openvpn client实现,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

照说OpenWRT下实现openvpn的接入应该不难,可是通过实际动手的时候发现仍是蛮多坑的。中国的OpenWRT社区也是杂乱无章,找些有用的东西实在太难。这两天看了很多openvpn和OpenWRT官方的英文文档,总算完美的实现了本身的需求。总结出来贡献给你们,少走弯路。算法

废话很少少进入正题shell

一、首先你要有一个运行有OpenWRT系统的路由器,配置不要过低,版本不要太旧。我如今的路由是14.09版本的,内核版本3.14,仍是蛮新的。实在没有的能够联系我购买。个人是580Mhz的处理器,32MB ROM,128M RAM 的配置。

二、而后是安装

opkg update
opkg install openvpn-openssl

三、上传证书及密钥到路由器中,例如我上传的是/root/vpn/目录下。

四、配置UCI

我上网找了不少文章,配置方法都是直接编写配置文件而后使用openvpn --config name.conf的方式运行。虽然这种方法也能成功运行,可是不利于维护和管理,容易出问题。openwrt提供了统一的UCI配置接口,简单稳定仍是建议采用UCI的方式。vim

vim /etc/config/openvpn

#先删掉原有的配置,添加以下配置

config openvpn name_config    #后面的name_config能够随便改
    option enabled 1    #1为启用配置
    option config /root/vpn/config    #引用配置文件

config openvpn name1_config    #若是想要同时连多台服务器须要加上
    option enabled 1
    option config /root/vpn/config2
    

五、编辑openvpn配置文件

vim /root/vpn/config

client    #客户端模式
dev tun    #若是同时连多个请指定tun序号
proto udp    #udp效率最高
remote IP 1194    #服务端地址与端口
resolv-retry infinite
nobind    #不绑定固定端口
#user nobody    #运行权限
#group nogroup
persist-key    #key保持
persist-tun    #接口保持
ca ca.crt
cert client.crt
key client.key
tls-auth takey.key 1
#auth-user-pass
cipher AES-256-CBC    #加密算法,与服务端一致
comp-lzo    #启用压缩,需服务端支持
verb 3    #日志级别
mute 20    #合并相同日志
mssfix 1400    #修改mss单元大小

六、测试是否能正常链接

logread -f    #openwrt下查看日志的方法。

新开一个窗口,或使用tmux新建一个面板。服务器

/etc/init.d/openvpn restart

过十多秒后,ping对端的IP,若是能正常连通,说明已正常连通,若是不能请查日志。测试

这时候你会发现只能在路由器中ping得通,可是接在路由器中的其余电脑确不能,这是由于iptables还缺少相应规则。须要添加:加密

iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -I POSTROUTING -s 路由器网段 -d 对端网段 -o tun0 -j MASQUERADE

七、实现openvpn链接后自动添加iptables规则

建立shell脚本up.shrest

#!/bin/sh
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -I POSTROUTING -s 路由器网段 -d 对端网段 -o tun0 -j MASQUERADE

还须要建立down.sh脚本,断开链接后删除相应的规则日志

#!/bin/sh
iptables -D FORWARD -o tun0 -j ACCEPT
iptables -t nat -D POSTROUTING -s 192.168.11.0/24 -d 192.168.6.0/24 -o tun0 -j MASQUERADE

在openvpn配置文件中调用code

vim /root/vpn/config
#在文件结尾追加
script-security 2
up /root/vpn/up.sh
down /root/vpn/down.sh

别忘了给脚本文件添加权限chmod +x up.sh,chmod +x down.sh接口

有一点须要注意:若是要添加up与down的脚本,前面的配置文件里就不能以nobody的身份运行的配置

八、使openvpn服务能开机自动运行

/etc/init.d/openvpn enable
/etc/init.d/openvpn restart