下载openvpn一键安装脚本

wget https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh

执行脚本,按照步骤配置安装

./openvpn-install.sh

image.png

image.png

image.png image.png 最后一样会告诉你ovpn文件存放的位置,一般是用户家目录 再次执行脚本会出现新的选项 image.png 1,添加新用户:为新的 VPN 用户生成证书和配置文件。 2,撤销现有用户:吊销现有用户的访问权限。 3,移除 OpenVPN:卸载 OpenVPN 服务及其相关配置。 4,退出:退出管理脚本,不执行任何操作。

安装完成后会在etc下出现服务目录和配置image.png 有一些可选配置 个人使用的配置

port 1194
proto tcp
dev tun
user nobody
group nobody
persist-key
persist-tun
keepalive 10 120
topology subnet

# 定义VPN的子网,确保没有与本地网络冲突
server 192.168.85.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# 将所有流量通过VPN进行转发
push "redirect-gateway def1 bypass-dhcp"

# 加密和认证设置
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_zzFIF1Ti79v0HYAN.crt
key server_zzFIF1Ti79v0HYAN.key

# 加密算法
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM

# TLS设置
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256

# 客户端配置目录
client-config-dir /etc/openvpn/ccd

# 状态和日志文件
status /var/log/openvpn/status.log
log /var/log/openvpn/openvpn.log
verb 3

# 允许同一证书的多个实例连接
duplicate-cn

# 优化MTU设置
tun-mtu 1500
mssfix 1400

然后执行一下

sudo iptables -t nat -A POSTROUTING -s 192.168.85.0/24 -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o eth0 -s 192.168.85.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -d 192.168.85.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT

1当从 192.168.85.0/24 子网的数据包通过 eth0 网卡发送到外部网络时,数据包的源 IP 地址会被修改为 eth0 网卡的 IP 地址,从而实现网络地址转换。这样外部网络就能够响应这些数据包,并将响应数据包正确返回到 VPN 客户端。 同样会修改一下客户端的配置,因为使用push "redirect-gateway def1 bypass-dhcp"这个参数会修改客户端的默认网关,使得所有流量都通过 VPN 服务器,这种配置可能会导致本地网络连接中断 2允许来自 192.168.85.0/24 子网并通过 tun0 接口进入的数据包转发到 eth0 接口,这使得从 VPN 客户端发送到外部网络的数据包能够正确转发。 3允许从外部网络通过 eth0 接口进入并要转发到 192.168.85.0/24 子网的数据包,但这些数据包必须是属于已建立连接的会话或与已建立连接相关的。这确保了外部网络响应 VPN 客户端请求的数据包能够正确转发回 VPN 客户端。 image.png image.png 亚马逊云在把实例这个关闭一下,然后打开自己的安全组1194端口 服务端修改配置后用systemctl重启openvpn@server服务端

客户端

我常用的客户端配置

client
proto tcp-client
explicit-exit-notify
remote 服务端ip 端口
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_zzFIF1Ti79v0HYAN name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
route-nopull 
max-routes 1000 
route 172.32.0.0 255.255.0.0 vpn_gateway  
verb 3
tun-mtu 1500
mssfix 1400

route 172.32.0.0 255.255.0.0 vpn_gateway这一行是告诉客户端,所有发往 172.32.0.0/16 网络的流量都通过 VPN 隧道(vpn_gateway)传输,而其他流量则走本地网关。这种配置可以避免对本地网络连接的影响。

将ovpn文件拿到windows上,使用openvpn软件加载文件,就可以正常访问线上的内网了image.png