openvpn搭建笔记
  TEZNKK3IfmPf 2023年11月13日 18 0

线上生产环境,出于安全考虑,有些服务器是不需要公网IP,但是平常运维人员管理起来又不太方便。

这时候我们可以在服务器集群中挑一个拥有公网IP的服务器,搭建个Open×××就行了。

####### 坑爹的51cto,把我的文章里的空格都吃了。######

环境“:2CentOS6.7 X86_64

node3:机房的后端web服务器  eth0 192.168.3.13/24 Vmnet3

node4Open××× Server 

    外网(eth0 192.168.2.14/24) Vmnet8(模拟公网的IP

    内网(eth1 192.168.3.14/24) Vmnet3

    ×××拨号获取的地址为192.168.100.X/24

运维人员的地址: 192.168.2.10(模拟公网的IP

openvpn搭建笔记组织

exportKEY_EMAIL="xxxx@xxxx.com"  邮箱

exportKEY_OU="xxxx.com"  单位

 

openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记FilenameNeed byPurposeSecretca.crt服务器端、客户端都需要这个文件Root CA certificateNOca.keykey signing macheine onlyRoot CA keyYESdh{n}.pemserver onlyDH parametersNOserver.crtserver onlyServer certificateNOserver.keyserver onlyServer keyYESclient1.crtclient1 onlyClient1 certificateNOclient1.keyclient1 onlyClient1 keyYES

 

为了防止恶意攻击(如DDOSUDPport flooding),我们生成一个“HMAC firewall”

openvpn --genkey --secretkeys/ta.key

这样就会在keys目录下生成一个2048bits Open××× static key

 

内容小结:

var        存放用户的变量信息

clean-all  清理keys目录下全部文件

build-ca   脚本生成CA证书(交互)

build-key-server  脚本生成服务器端秘钥(交互)

build-key  脚本生成客户端秘钥(交互)

build-key-pass 生成带秘钥的客户端秘钥(交互)

build-dh   脚本生成DH文件(交互)

 

配置服务器端×××配置文件

mkdir /etc/openvpn -pv

cp/usr/share/doc/openvpn-2.3.12/sample/sample-config-files/server.conf  /etc/openvpn/

cd /etc/openvpn/

cp server.conf server.conf_bak

egrep -v '^$|^#|;' server.conf_bak > server.conf  # 导出默认启用的配置

 

vimserver.conf 我们自己修改的地方如下:

 

local 192.168.2.14   # 监听的公网地址,这条可以注释掉,没什么关系

port        1194       # 默认1194端口,建议修改成其他的端口

proto       tcp        # 建议使用TCP协议,更稳定些,客户端ovpn文件中设置要与此一致

dev         tun       #基于路由的隧道

 

ca         /etc/openvpn/easy-rsa/2.0/keys/ca.crt          # 之前执行./build-ca建立的根证书,建议使用全路径

cert        /etc/openvpn/easy-rsa/2.0/keys/server.crt     # 服务器私有证书,建议使用全路径

key        /etc/openvpn/easy-rsa/2.0/keys/server.key     # 服务器私有密钥,建议使用全路径

dh          /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem     # 之前执行./build-dh生成的文件

server     192.168.100.0 255.255.255.0      #要分配的×××网段(不能和服务器上或者本机的IP段相同)

ifconfig-pool-persist ipp.txt     # 记录客户端所获得IP

push "route 192.168.3.0 255.255.255.0"  # 在客户端上推送并配置上这条路由,这是××× Server所在的内网网段,也是后端服务器所在的内网网段

client-to-client        # 允许客户端之间相互通讯

duplicate-cn            # 允许多个客户端使用同一个账号连接

keepalive 10 120        # 10ping一次,若是120s未收到包,即认定客户端短线;

comp-lzo                  # 开启×××连接压缩.客户端必须做相同设置读取

max-clients 100          # 允许客户端并发连接的数量

persist-key                # vpn超时后,重新启动vpn后,保持上一次使用的私钥,而不重新读取私钥

persist-tun                # 通过keepalive 检测vpn超时后,当重新启动vpn后,保持tun或者tap设备自动连接状态

status openvpn-status.log      #定义openvpn连接状态日志

 

log         /var/log/openvpn.log      # 定义日志路径

log-append  /var/log/openvpn.log

 

verb 3                    # 指定日志文件冗余

 

crl-verify/etc/openvpn/easy-rsa/2.0/keys/crl.pem       #证书吊销列表的路径

 

配置防火墙

# 放行1194端口

iptables -A INPUT -p tcp --dport 1194 -j ACCEPT

 

# 配置iptables nat (此处不配置的话客户端连上×××后只能登陆服务端一台主机需要特别注意)

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -oeth1 -j MASQUERADE   # 凡是来自×××IP网段的数据包出去的时候,都做地址转换

# 说明:eth1 vpn server的内网网卡,192.168.100.0/24×××服务器的分配的地址段

 

service iptables save

chkconfig iptables on

 

开启×××Server内核转发

echo '1' > /proc/sys/net/ipv4/ip_forward

 

sed -i  "s#net.ipv4.ip_forward = 0#net.ipv4.ip_forward= 1#g" >> /etc/sysctl.conf

grep net.ipv4.ip_forward/etc/sysctl.conf 确认下是否修改成功

sysctl -p

 

启动×××服务

/usr/sbin/openvpn --config/etc/openvpn/server.conf &   【先尝试下能否启动,没问题的话,建议改成supervisor的方式监控它的运行】

ss -lntp|grep 1194

openvpn server(即node4)上执行ifconfig可以看到vpnserver的网关地址

openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记openvpn搭建笔记

上图虽然报了error 23 ,但是我们到keys目录下,可以看到crl.pem 这个吊销的客户端列表。

 

这样的话,lirulei  用户就无法再连接到××× Server了。

 

如果用户再用被吊销的证书连接openvpn服务器的话,/var/log/openvpn.log记录里记录TLS握手失败,无法登录的条目。

                           

 

3、配置linux下的openvpn客户端

有时候linux服务器也需要连接到其他的服务器(如阿里云的服务器需要连接在美团云的MySQL)

 

node1192.168.2.11 client3账户的key文件演示。

安装依赖包

yum install openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig

 

安装openvpnserver

yum install -y openvpn    # 实验时候,aliyun最新的epel源提供的是2.3.12版本

 

编辑client.conf客户端连接文件

cd /etc/openvpn/

client

dev tun

proto tcp

remote 192.168.2.14 1194

resolv-retry infinite

nobind

persist-key

persist-tun

 

ca ca.crt

cert client3.crt

key client3.key

 

comp-lzo

verb 3

 

redirect-gateway def1

route-method exe

route-delay 2

 

拷贝秘钥文件

cd /etc/openvpn/

然后拷贝ca.crt client2.key client2.crt /etc/openvpn/这个目录下。

 

启动client

/usr/sbin/openvpn/etc/openvpn/client.conf & 即可让vpn客户端在后台运行。

 

如果有需要的话,可以做成supervisor控制的方式。

 

测试连接

node1上,ping 192.168.3.13 可以看到回包说明配置OK了。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   30   0   0 客户端
  TEZNKK3IfmPf   2024年04月19日   11   0   0 client调用server
  TEZNKK3IfmPf   2024年03月29日   45   0   0 客户端端口Socket
TEZNKK3IfmPf