linux下部署openvpn
安装基础软件
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.2.4/EasyRSA-3.2.4.tgz
tar -zxvf EasyRSA-3.2.4.tgz
yum install openvpn修改证书信息
cd EasyRSA-3.2.4
touch vars
echo 'if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA
'vars' file." >&2
echo "This is no longer necessary and is
disallowed. See the section called" >&2
echo "'How to use this file' near the top
comments for more details." >&2
return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "koten"
set_var EASYRSA_REQ_EMAIL "888888@qq.comm"
set_var EASYRSA_NS_SUPPORT "yes"'>vars初始化并创建CA证书
./easyrsa init-pki #1、初始化,在当前目录创建PKI目录,用于存储整数
./easyrsa build-ca #2、创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他提示内容直接回车即可创建server和client证书
./easyrsa gen-req server nopass #3、创建server端证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车即可
./easyrsa sign server server #4、给server端证书签名,提示内容需要输入yes和创建ca根证书时候的密码
./easyrsa gen-dh #5、创建Diffie-Hellman文件,密钥交换时的Diffie-Hellman算法
./easyrsa gen-req client nopass #6、创建client端的证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车即可
./easyrsa sign client client #7、给client端证书前面,提示内容输入yes和创建ca根证书时候的密码
cd EasyRSA-3.2.4/pki
openvpn --genkey --secret ta.key
cp -r pki /etc/openvpn/serverserver配置文件
local 0.0.0.0
port 1194 #端口
proto udp #协议
dev tun #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt #ca证书的位置
cert ./pki/issued/server.crt #服务端公钥的位置
key ./pki/private/server.key #服务端私钥的位置
dh ./pki/dh.pem #证书校验算法
server 10.8.0.0 255.255.255.0 #给客户端分配的地址池
push "route 192.168.2.0 255.255.255.0" #允许客户端访问的内网网段
push "dhcp-option DNS 223.5.5.5"
ifconfig-pool-persist ipp.txt #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
log /var/log/openvpn.log
tls-auth ./pki/ta.key 0
keepalive 10 120 #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 1000 #最多允许100个客户端连接
status openvpn-status.log #日志位置,记录openvpn状态
log /var/log/openvpn.log #openvpn日志记录位置
cipher AES-256-CBC
verb 3 #openvpn版本
client-to-client #允许客户端与客户端之间通信
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn #客户端密钥(证书和私钥)是否可以重复
comp-lzo #启动lzo数据压缩格式
explicit-exit-notify 1
duplicate-cn
script-security 3 #允许使用自定义脚本
auth-user-pass-verify /etc/openvpn/server/check.sh via-env #指定认证脚本
username-as-common-name #用户密码登陆方式验证服务端启动脚本
echo '[Unit]
Description=OpenVPN service for %I
After=syslog.target network-online.target
Wants=network-online.target
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
[Service]
Type=notify
PrivateTmp=true
WorkingDirectory=/etc/openvpn/server
ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --cipher AES-256-GCM --ncp-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC:AES-128-CBC:BF-CBC --config %i.conf
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE CAP_AUDIT_WRITE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ProtectSystem=true
ProtectHome=true
KillMode=process
RestartSec=5s
Restart=on-failure
[Install]
WantedBy=multi-user.target' >/etc/systemd/system/openvpn@.service开启路由转发
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p如果没有公网ip,需要使用iptables规则
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp2s0 -j MASQUERADE
其中10.8.0.0/24 是上面server配置文件中设置的网段,enp2s0是网卡的名字启动
systemctl start openvpn@server
systemctl enable openvpn@serverOpenVPN客户端配置(linux端)
yum -y install openvpn
echo 'client
dev tun
proto udp
remote 125.70.163.228 1194
resolv-retry infinite
nobind
tls-auth ta.key 1
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
comp-lzo
auth-user-pass' >/etc/openvpn/client/client.conf
下载到客户端/etc/openvpn/client目录
/opt/easy-rsa/pki/ca.crt
/opt/easy-rsa/pki/issued/client.crt
/opt/easy-rsa/pki/private/client.key
/opt/easy-rsa/pki/ta.keylinux客户端启动脚本
echo '[Unit]
Description=OpenVPN connection to %I
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/sbin/openvpn --cd etc/openvpn/client --config %i.conf
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target' >/etc/systemd/system/openvpn@.service
systemctl start openvpn@client
systemctl enable openvpn@clientwindows下客户端





导入配置文件,解压openvpn.zip 到openvpn安装目录的config目录下



openvpn.zip的内容是从服务端考下来的正式和clinent.ovpn
clinent.ovpn内容
client
dev tun
proto udp
remote 125.70.163.228 1194
resolv-retry infinite
nobind
tls-auth ta.key 1
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
comp-lzo
auth-user-pass双击右下角openvpn图标连接vpn,变绿表示成功

- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小白
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

