openwrt下的openvpn client实现

发布于 2021-08-20  5.12k 次阅读


安装

opkg update
opkg install openvpn-openssl

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

配置UCI

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单元大小
/etc/init.d/openvpn restart
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

擦肩而过的概率