内容目录
windows客户端
OpenVPN-2.6.9-I001-amd64.msi
- 下载服务端准备的客户端密钥文件和CA文件至
C:\Program Files\OpenVPN\config
目录中
sz /opt/easy-rsa/pki/ca.crt
sz /opt/easy-rsa/pki/issued/client.crt
sz /opt/easy-rsa/pki/private/client.key
- 在
C:\Program Files\OpenVPN\config
创建一个客户端配置文件,名称叫client.ovpn
client #指定当前VPN是客户端
dev tun #使用tun隧道传输协议
proto tcp #使用tcp协议传输数据
remote x.x.x.x xxx #openvpn服务器IP地址端⼝号
resolv-retry infinite #断线自动重新连接,在⽹络不稳定的情况下非常有用
nobind #不绑定本地特定的端⼝号
ca ca.crt #指定CA证书的文件路径
cert client.crt #指定当前客户端的证书文件路径
key client.key #指定当前客户端的私钥文件路径
verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第⼀次使用的keys
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown后才linkup
- 登录成功后,通过
windows
查看opvpn
服务推送过来的路由信息
# windows查看推送过来的路由信息
route print -4
OpenVpn访问内部网段
内部节点无法正常访问
- 抓包分析数据包能抵达
openvpn
的内网地址,但无法与openvpn服务推送的内网网段主机进行通信 - 因为内网网段主机没有去往
remote user
网段的路由,所以数据包无法原路返回,最终造成无法ping
通
# 在后端的主机上抓包分析,发现能接收到数据包,但没有回去的路由所以无法通信
tcpdump -i eth0 -nn -p icmp
- 解决此问题有如下几种方式:
- 方式1:在每台后端主机添加一条路由,下一跳为
openvpn
服务器 - 方式2:配置
iptables、firewalld
的NAT
规则
- 方式1:在每台后端主机添加一条路由,下一跳为
在节点上添加主机路由
- 在后端主机添加去往
remote user
网段的路由
route add -net x.x.x.x/24 gw x.x.x.x
#防止系统重启后路由丢失,永久添加路由条目
vim /etc/sysconfig/network-scripts/route-eth0
x.x.x.x/24 via x.x.x.x
- 添加完路由后,继续
ping
,再抓包确认 - 检查内网服务器与哪个IP建立连接(会发现是真实的VPN客户端ip地址),该ip地址是openvpn配置文件中的server 定义的网段(该网段不能和内网网段有相同)。
netstat -an | grep -i estab
Active Internet connections (servers and established)
tcp 0 0 x.x.x.x:80 remote user ip:23958 ESTABLISHED
tcp 0 0 x.x.x.x:80 remote user ip:23969 ESTABLISHED
配置虚拟机NAT地址替换
- 思源笔记支持
S3
存储,在openvpn
虚机配置如下命令:iptables -t nat -A POSTROUTING -s x.x.x.x/24 -d y.y.y.y -o eth1 -j SNAT --to z.z.z.z iptables -t nat -L -n -v Chain POSTROUTING (policy ACCEPT 199 packets, 12336 bytes) pkts bytes target prot opt in out source destination 41 2132 SNAT all -- * eth1 x.x.x.x/24 y.y.y.y to:10.100.100.100
留言