赞
踩
是因为上一篇文章搭建的是内网VPN,也就是客户端访问服务端的内网网络。
下面是配置连接vpn后使用服务端IP当做客户端的出口IP步骤:
#__server.conf—stat___ #端口 port 1194 #协议 proto tcp dev tun #ca证书文件 ca /data/openvpn/certificate/ca.crt #服务端证书文件 cert /data/openvpn/certificate/openvpnserver.crt #服务端私钥文件 key /data/openvpn/certificate/openvpnserver.key #交换秘钥文件 dh /data/openvpn/certificate/dh.pem #安全增强文件,0是服务端,1是客户端 tls-auth /data/openvpn/certificate/ta.key 0 #分配客户端IP的网段,不能和服务器一个网段,不能冲突 server 10.8.0.0 255.255.255.0 #运行通讯的内网路由,可以多条 push "route 192.168.0.0 255.255.255.0" #会话检测,每十秒测试一下,超过120秒没回应就认为对方down keepalive 10 120 #加密算法 cipher AES-256-CBC #压缩算法 compress lz4-v2 #推送客户端使用lz4-v2算法 push "compress lz4-v2" #最大客户端数 max-clients 100 #运行openvpn的用户和用户组 user openvpn group openvpn #状态日志 status /data/openvpn/logs/openvpn-status.log log-append /data/openvpn/logs/openvpn.log #日志级别 verb 3 mute 20 #__server.conf—end_
#__server.conf—stat___ #端口 port 1194 #协议 proto tcp dev tun #ca证书文件 ca /data/openvpn/certificate/ca.crt #服务端证书文件 cert /data/openvpn/certificate/openvpnserver.crt #服务端私钥文件 key /data/openvpn/certificate/openvpnserver.key #交换秘钥文件 dh /data/openvpn/certificate/dh.pem #安全增强文件,0是服务端,1是客户端 tls-auth /data/openvpn/certificate/ta.key 0 #分配客户端IP的网段,不能和服务器一个网段,不能冲突 server 10.8.0.0 255.255.255.0 #会话检测,每十秒测试一下,超过120秒没回应就认为对方down keepalive 10 120 #加密算法 cipher AES-256-CBC #压缩算法 compress lz4-v2 #推送客户端使用lz4-v2算法 push "compress lz4-v2" #最大客户端数 max-clients 100 #运行openvpn的用户和用户组 user openvpn group openvpn #状态日志 status /data/openvpn/logs/openvpn-status.log log-append /data/openvpn/logs/openvpn.log #日志级别 verb 3 mute 20 #路由 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 114.114.114.114" #__server.conf—end_
优点:所有流量出口都是vpn服务端的地址,
缺点:因为配置成这样的话,客户端的请求都会走到vpn服务器,然后再走到互联网;假如你本地宽带是100M,vpn服务端带宽是1M,那么用这种模式,你连上vpn实际的带宽就是1M,也就是vpn服务端的带宽数
#__server.conf—stat___ #端口 port 1194 #协议 proto tcp dev tun #ca证书文件 ca /data/openvpn/certificate/ca.crt #服务端证书文件 cert /data/openvpn/certificate/openvpnserver.crt #服务端私钥文件 key /data/openvpn/certificate/openvpnserver.key #交换秘钥文件 dh /data/openvpn/certificate/dh.pem #安全增强文件,0是服务端,1是客户端 tls-auth /data/openvpn/certificate/ta.key 0 #分配客户端IP的网段,不能和服务器一个网段,不能冲突 server 10.8.0.0 255.255.255.0 #运行通讯的内网路由,可以多条 push "route 192.168.0.0 255.255.255.0" #会话检测,每十秒测试一下,超过120秒没回应就认为对方down keepalive 10 120 #加密算法 cipher AES-256-CBC #压缩算法 compress lz4-v2 #推送客户端使用lz4-v2算法 push "compress lz4-v2" #最大客户端数 max-clients 100 #运行openvpn的用户和用户组 user openvpn group openvpn #状态日志 status /data/openvpn/logs/openvpn-status.log log-append /data/openvpn/logs/openvpn.log #日志级别 verb 3 mute 20 #__server.conf—end_
#__server.conf—stat___ #端口 port 1194 #协议 proto tcp dev tun #ca证书文件 ca /data/openvpn/certificate/ca.crt #服务端证书文件 cert /data/openvpn/certificate/openvpnserver.crt #服务端私钥文件 key /data/openvpn/certificate/openvpnserver.key #交换秘钥文件 dh /data/openvpn/certificate/dh.pem #安全增强文件,0是服务端,1是客户端 tls-auth /data/openvpn/certificate/ta.key 0 #分配客户端IP的网段,不能和服务器一个网段,不能冲突 server 10.8.0.0 255.255.255.0 #注释下条---------运行通讯的内网路由,可以多条 #push "route 192.168.0.0 255.255.255.0" #会话检测,每十秒测试一下,超过120秒没回应就认为对方down keepalive 10 120 #加密算法 cipher AES-256-CBC #压缩算法 compress lz4-v2 #推送客户端使用lz4-v2算法 push "compress lz4-v2" #最大客户端数 max-clients 100 #运行openvpn的用户和用户组 user openvpn group openvpn #状态日志 status /data/openvpn/logs/openvpn-status.log log-append /data/openvpn/logs/openvpn.log #日志级别 verb 3 mute 20 #新增的信息------------------------路由 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 114.114.114.114" #__server.conf—end_
client
dev tun
proto tcp
remote 124.70.49.106 1194
resolv-retry infinite
nobind
ca ca.crt
cert zhangsan.crt
key zhangsan.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
compress lz4-v2
client dev tun proto tcp remote 124.70.49.106 1194 resolv-retry infinite nobind ca ca.crt cert zhangsan.crt key zhangsan.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC verb 3 compress lz4-v2 #新增的配置 route-nopull route 11.0.0.0 255.255.255.0 vpn_gateway #这样的话客户端只有访问11.0.0.0/24的地址才会走vpn隧道,也就是会使用vpn服务端的IP地址,访问其他地址还是会走本地网络。
优点;灵活
缺点:新增一个地址就需要配置一条
这个其实写个脚本就可以,我这边提供一个脚本:
#openvpn-client-create.sh #!/bin/bash # #导入functions . /etc/init.d/functions #OPENVPN服务端的IP OPENVPN_SERVER=124.70.49.106 #OPENVPN服务端的端口 OPENVPN_PORT=1194 #如果存在证书就删除证书 remove_cert () { rm -rf /data/openvpn/client/${NAME} find /data/openvpn/ -name "$NAME.*" -delete } #创建证书 create_cert () { cd /data/openvpn/easy-rsa-client/ ./easyrsa gen-req ${NAME} nopass <<EOF EOF cd /data/openvpn/easy-rsa-server/ sed -i "s/set_var EASYRSA_CERT_EXPIRE.*$/set_var EASYRSA_CERT_EXPIRE\t$OPENVPN_DATA/g" ./vars ./easyrsa import-req /data/openvpn/easy-rsa-client/pki/reqs/${NAME}.req ${NAME} ./easyrsa sign client ${NAME} <<EOF yes EOF mkdir /data/openvpn/client/${NAME} cp /data/openvpn/easy-rsa-server/pki/issued/${NAME}.crt /data/openvpn/client/${NAME} cp /data/openvpn/easy-rsa-client/pki/private/${NAME}.key /data/openvpn/client/${NAME} cp /data/openvpn/certificate/{ca.crt,ta.key} /data/openvpn/client/${NAME} #生产客户端配置文件 cat > /data/openvpn/client/${NAME}/client.ovpn <<EOF client dev tun proto tcp remote ${OPENVPN_SERVER} ${OPENVPN_PORT} resolv-retry infinite nobind ca ca.crt cert $NAME.crt key $NAME.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC verb 3 compress lz4-v2 EOF echo "证书存放路径:/data/openvpn/client/${NAME},证书文件如下:" echo -e "\E[1;32m******************************************************************\E[0m" ls -l /data/openvpn/client/${NAME} echo -e "\E[1;32m******************************************************************\E[0m" cd /data/openvpn/client/${NAME} zip /root/${NAME}-openvpn.zip * action "证书的打包文件已生成: /root/${NAME}-openvpn.zip" } read -p "请输入用户的姓名拼音(如:zhangsan): " NAME read -p "请输入证书的有效期(默认:90天): " OPENVPN_DATA OPENVPN_DATA=${OPENVPN_DATA:=90} remove_cert create_cert
[root@hecs-289073 tmp]# sh openvpn-client-create.sh
请输入用户的姓名拼音(如:zhangsan): zhangsan
请输入证书的有效期(默认:90天):
...
证书的打包文件已生成: /root/zhangsan-openvpn.zip [ OK ]
#例如生成张三的证书,证书有效期不输入数字的话默认设置的是90天。
#出现上面的打包文件已生成就表示客户端证书生成了
cat /data/openvpn/logs/openvpn.log #报错
2022-07-31 17:51:01 Read error on key file ('/data/openvpn/certificate/ta.key')
2022-07-31 17:51:01 Exiting due to fatal error
2022-07-31 17:51:01 net_route_v4_del: 10.8.0.0/24 via 10.8.0.2 dev [NULL] table 0 metric -1
2022-07-31 17:51:01 sitnl_send: rtnl: generic error (-1): Operation not permitted
2022-07-31 17:51:01 ERROR: Linux route delete command failed
2022-07-31 17:51:01 Closing TUN/TAP interface
2022-07-31 17:51:01 net_addr_ptp_v4_del: 10.8.0.1 dev tun0
2022-07-31 17:51:01 sitnl_send: rtnl: generic error (-1): Operation not permitted
2022-07-31 17:51:01 Linux can't del IP from iface tun0
#上边的问题,检查一下是否有这个文件/data/openvpn/certificate/ta.key。并查看一下这个文件的属主属组是不是openvpn。
chown openvpn. /data/openvpn -R && systemctl restart openvpn.service
执行上面的命令然后再试试
其他都正常,就是访问不了配置的内网地址
1.检查一下是否开启内核转发
sysctl -n net.ipv4.ip_forward
显示如下结果为正常
[root@hecs-289073 logs]# sysctl -n net.ipv4.ip_forward
1
2.检查iptables是否配置nat转发
[root@hecs-289073 logs]# iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.8.0.0/24 anywhere
有上面这条为正确,10.8.0.0/24 这个是我们在 /data/openvpn/server.conf 中分配给客户端的IP端
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。