三、连接测试
双击打开OpenVPN(桌面快捷方式)右下角出现图标,右键连接
等待进度走完会自动连接
查看网络连接,发现多了以太网3
右键,状态,详细信息,可以看到ipv4地址是10.8.0.6是我们配置的那个段的地址
Xshell新开个本地会话,发现可以ping通openvpn服务端的内网,也可以进行ssh连接,当出差在外时,可以先连通openvpn内网再连接要工作的服务器的内网。
1. [c:\~]$ ping 172.16.1.7 2. 3. 正在 Ping 172.16.1.7 具有 32 字节的数据: 4. 来自 172.16.1.7 的回复: 字节=32 时间=1ms TTL=64 5. 来自 172.16.1.7 的回复: 字节=32 时间<1ms TTL=64 6. 来自 172.16.1.7 的回复: 字节=32 时间<1ms TTL=64 7. 8. 172.16.1.7 的 Ping 统计信息: 9. 数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失), 10. 往返行程的估计时间(以毫秒为单位): 11. 最短 = 0ms,最长 = 1ms,平均 = 0ms 12. ^C 13. [c:\~]$ ssh 172.16.1.7 14. 15. 16. Connecting to 172.16.1.7:22... 17. Connection established. 18. To escape to local shell, press Ctrl+Alt+]. 19. 20. Last login: Sat May 20 09:07:58 2023 from 10.0.0.1 21. [root@Web01 ~]#
四、直连其他内网服务器
首先确保我们的openvpn服务端开启了内核转发
1. [root@Web01 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #确保openvpn开启了ip转发 2. [root@Web01~]# sysctl -p 3. net.ipv4.ip_forward = 1
尝试ping其他内网服务器,会显示请求超时,需要在添加其他内网服务器添加网关后,才可以ping通,才可以直连。
1. [c:\~]$ ping 172.16.1.8 #1、无法ping通其他内网服务器,也就是无法直连 2. 3. 正在 Ping 172.16.1.8 具有 32 字节的数据: 4. 请求超时。 5. ...... 6. 7. [root@Web02 ~]# yum -y install tcpdump #2、安装tcpdump尝试监控流量 8. [root@Web02 ~]# tcpdump -i eth1 -nn not icmp #3、windows端再次ping,虽然ping显示请求超时,但是tcp监控有流量进入,说明只能接收,不能返回 9. 12:47:58.759367 IP 10.8.0.10 > 172.16.1.8: ICMP echo request, id 1, seq 514, length 40 10. 12:48:03.290454 IP 10.8.0.10 > 172.16.1.8: ICMP echo request, id 1, seq 515, length 40 11. ...... 12. [root@Web02 ~]# route add -net 10.8.0.0 netmask 255.255.255.0 gw 172.16.1.7 #4、添加路由,临时生效,可以加入/etc/rc.local实现永久生效 13. 14. [c:\~]$ ping 172.16.1.8 #5、本地成功ping通 15. 16. 正在 Ping 172.16.1.8 具有 32 字节的数据: 17. 来自 172.16.1.8 的回复: 字节=32 时间=1ms TTL=63 18. 来自 172.16.1.8 的回复: 字节=32 时间=2ms TTL=63 19. ...... 20. [c:\~]$ ssh 172.16.1.8 #6、直连也没有问题 21. 22. Connecting to 172.16.1.8:22... 23. Connection established. 24. To escape to local shell, press Ctrl+Alt+]. 25. 26. Last login: Sun May 21 12:47:51 2023 from 10.0.0.1 27. [root@Web02 ~]#
Openvpn密码认证
一、服务端配置
1、修改服务端配置文件为支持密码认证
1. [root@Web01 ~]# cat /etc/openvpn/server.conf #添加配置文件 2. ...... 3. script-security 3 #允许使用自定义脚本 4. auth-user-pass-verify /etc/openvpn/check.sh via-env #指定认证脚本 5. username-as-common-name #用户密码登陆方式验证
2、编写脚本文件
1. [root@Web01 ~]# cat /etc/openvpn/check.sh # 2. #!/bin/bash 3. PASSFILE="/etc/openvpn/openvpnfile" #密码文件 用户名 密码明文 4. LOG_FILE="/var/log/openvpn-password.log" #用户登录情况的日志 5. TIME_STAMP=`date "+%Y-%m-%d %T"` 6. if [ ! -r "${PASSFILE}" ]; then 7. echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE} 8. exit 1 9. fi 10. CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}` 11. if [ "${CORRECT_PASSWORD}" = "" ]; then 12. echo "${TIME_STAMP}: User does not exist: username=\"${username}\",password=\"${password}\"." >> ${LOG_FILE} 13. exit 1 14. fi 15. if [ "${password}" = "${CORRECT_PASSWORD}" ]; then 16. echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE} 17. exit 0 18. fi 19. echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE} 20. exit 1
3、给脚本执行权限
[root@Web01 ~]# chmod +x /etc/openvpn/check.sh
4、创建用户密码,空格为分割符
1. [root@Web01 ~]# cat /etc/openvpn/openvpnfile 2. koten 1
5、重启服务端
[root@Web01 ~]# systemctl restart openvpn@server
二、linux客户端配置
在/etc/openvpn/client.conf最下面加上auth-user-pass
1. [root@Web02 ~]# cat /etc/openvpn/client.conf 2. client 3. dev tun 4. proto udp 5. remote 10.0.0.7 1194 6. resolv-retry infinite 7. nobind 8. ca ca.crt 9. cert client.crt 10. key client.key 11. verb 3 12. persist-key 13. comp-lzo 14. auth-user-pass
重启测试连接,重启服务的时候需要输入密码
1. [root@Web02 ~]# systemctl restart openvpn@client #重启时候输入密码 2. Enter Auth Username: koten 3. Enter Auth Password: * 4. [root@Web02 ~]# ping 172.16.1.7 #密码正确可以ping通 5. PING 172.16.1.7 (172.16.1.7) 56(84) bytes of data. 6. 64 bytes from 172.16.1.7: icmp_seq=1 ttl=64 time=0.590 ms 7. 64 bytes from 172.16.1.7: icmp_seq=2 ttl=64 time=1.11 ms 8. ^C 9. --- 172.16.1.7 ping statistics --- 10. 2 packets transmitted, 2 received, 0% packet loss, time 1000ms 11. rtt min/avg/max/mdev = 0.590/0.850/1.110/0.260 ms 12. [root@Web02 ~]# systemctl restart openvpn@client 13. Enter Auth Username: 1 14. Enter Auth Password: * 15. [root@Web02 ~]# ping 172.16.1.7 #密码错误不能ping通 16. PING 172.16.1.7 (172.16.1.7) 56(84) bytes of data. 17. ^C 18. --- 172.16.1.7 ping statistics --- 19. 4 packets transmitted, 0 received, 100% packet loss, time 3001ms
三、windows客户端配置
先Disconnect断开连接,注意要先断开,否则容易报错,再修改配置文件
最底行添加auth-user-pass,注意该配置文件不要有多余空格,否则可能会报错
1. client 2. dev tun 3. proto udp 4. remote 10.0.0.7 1194 5. resolv-retry infinite 6. nobind 7. ca ca.crt 8. cert client.crt 9. key client.key 10. verb 3 11. persist-key 12. comp-lzo 13. auth-user-pass
再次连接,发现需要输入账号密码
再次输入密码成功连接
再次尝试ping,成功ping通
1. [c:\~]$ ping 172.16.1.7 2. 3. 正在 Ping 172.16.1.7 具有 32 字节的数据: 4. 来自 172.16.1.7 的回复: 字节=32 时间=1ms TTL=64 5. 来自 172.16.1.7 的回复: 字节=32 时间<1ms TTL=64 6. ......
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!