【运维知识进阶篇】手把手教你搭建OpenVPN(保姆级教程)(二)

简介: 【运维知识进阶篇】手把手教你搭建OpenVPN(保姆级教程)(二)

三、连接测试

双击打开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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
8月前
|
运维 安全 Ubuntu
kali 安全/运维 开源教程2022
kali 安全/运维 开源教程2022
95 0
|
3天前
|
运维 监控 关系型数据库
【Zabbix 6(1),Linux运维组件化开发教程
【Zabbix 6(1),Linux运维组件化开发教程
|
7月前
|
存储 运维 关系型数据库
|
9月前
|
运维 监控 小程序
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(四)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(四)
464 0
|
9月前
|
运维 数据库
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(三)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(三)
134 0
|
9月前
|
运维 数据库 数据安全/隐私保护
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(二)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(二)
119 0
|
9月前
|
运维 网络安全 数据库
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(一)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)
536 0
|
9月前
|
域名解析 运维 负载均衡
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
267 1
|
9月前
|
SQL 运维 监控
【运维知识进阶篇】Zabbix5.0稳定版详解11(在Grafana中使用Zabbix插件:安装Grafana+安装Zabbix插件+添加数据源+Grafana直连MySQL数据库取值)(下)
【运维知识进阶篇】Zabbix5.0稳定版详解11(在Grafana中使用Zabbix插件:安装Grafana+安装Zabbix插件+添加数据源+Grafana直连MySQL数据库取值)(下)
125 1
|
9月前
|
运维 监控 数据可视化
【运维知识进阶篇】Zabbix5.0稳定版详解11(在Grafana中使用Zabbix插件:安装Grafana+安装Zabbix插件+添加数据源+Grafana直连MySQL数据库取值)(上)
【运维知识进阶篇】Zabbix5.0稳定版详解11(在Grafana中使用Zabbix插件:安装Grafana+安装Zabbix插件+添加数据源+Grafana直连MySQL数据库取值)
261 0