Centos7使用docker搭建openvpn
准备好一台海外的主机,如公网ip为
47.213.133.182
,并安装好docker(docker官网下载最新的安装包),下载openvpn镜像docker pull kylemanna/openvpn:2.4
1、使用openvpn生成配置文件
mkdir -p /data/openvpn
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_genconfig -u udp://47.213.133.182
执行完命令后可在目录/data/openvpn
中看到相应的配置文件;
2、初始化密钥文件
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 ovpn_initpki
执行过程中需要先设置ca密码(如123456),Common Name可不设置直接按回车继续,接着需要输入ca密码更新密钥库以及生成crl文件;
3、生成客户端证书
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 easyrsa build-client-full openvpn-client nopass
其中openvpn-client
为自定义名称,生成的过程需要输入ca密码;
4、导出客户端的配置文件openvpn-client.ovpn
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_getclient openvpn-client > /data/openvpn/openvpn-client.ovpn
注意openvpn-client
名称需与第三步生成时命名一致,此时生成的配置文件openvpn-client.ovpn
即可用于客户端连接;
5、启动openvpn
docker run -v /data/openvpn:/etc/openvpn -d -p 1194:1194/udp --restart=always --name openvpn --cap-add=NET_ADMIN --sysctl net.ipv6.conf.all.disable_ipv6=0 --sysctl net.ipv6.conf.default.forwarding=1 --sysctl net.ipv6.conf.all.forwarding=1 kylemanna/openvpn:2.4
需要注意防火墙规则,其中1194为udp端口,可在其他机器上通过nc命令测试是否可连接
yum install nc -y
nc -vuz 47.213.133.182 1194
[root@ta6wkp3ir3ybrtef ~]# nc -vuz 47.213.133.182 1194
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 47.213.133.182:1194.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.
[root@ta6wkp3ir3ybrtef ~]#
6、修改iptables规则
修改配置文件/etc/sysconfig/iptables
,在*filter中的COMMIT命令前增加以下配置
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
重启iptables,systemctl restart iptables
,如未生效需重启docker
7、客户端安装openvpn客户端openvpn-install-2.4.4-I601.exe
安装好客户端后,导入openvpn客户端配置文件即可,ccip.cc检查当前ip;