搭建 OpenVPN 访问公司内网
2019年10月31日 · 437 字 · 1 分钟 · VPN
上家公司使用的是深信服,目前所在的公司是打算自己搭建 OpenVPN,所以就交给我来搞一搞了。
部署
docker pull kylemanna/openvpn
# 设置环境变量
OVPN_DATA="/root/ovpn-data"
IP="xxx.xxx.xxx.xxx"
mkdir ${OVPN_DATA}
# 要添加的客户端名字
CLIENTNAME="test"
# 获取配置
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://${IP}
# 初始化
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
# 创建 CLIENTNAME 测试用户,如果不需要密码记得最后加上 `nopass`
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full ${CLIENTNAME}
# 生成密钥
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient ${CLIENTNAME} > ${OVPN_DATA}/${CLIENTNAME}.ovpn
# 创建 server 容器
docker run --name openvpn -v ${OVPN_DATA}:/etc/openvpn -d -p 1194:1194 --privileged kylemanna/openvpn
在 /root/ovpn-data
中看到一个 CLIENTNAME.ovpn
文件,将其下载到本地,利用 OpenVpn 客户端连接即可。
另外注意在防火墙上添加外网端口映射。
添加用户
CLIENTNAME="test"
# 创建用户
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full ${CLIENTNAME}
# 生成密钥
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient ${CLIENTNAME} > ${OVPN_DATA}/${CLIENTNAME}.ovpn
删除用户
# 进入容器
docker exec -it openvpn bash
bash: easyrsa revoke test
bash: easyrsa gen-crl
# 如果 openvpn.conf 存在 crl-verify 则无需执行下面一条命令
bash: echo -e '\ncrl-verify /etc/openvpn/pki/crl.pem' >> /etc/openvpn/openvpn.conf
# 退出容器
bash: exit
# 重启容器
docker restart openvpn
查看所有用户
cat ${OVPN_DATA}/pki/index.txt
内容大致如下:
V 221015074405Z 62E92E6CB777C166868C5A00691FF143 unknown /CN=117.159.25.126
V 221015074434Z 94C64D2746FCE6BB9DFD8C934F939119 unknown /CN=chengxin
R 221015075501Z 191031080159Z 612761AA8B5BAB6B891A569D07AFF747 unknown /CN=test
第一个字母 R
表示账户已经注销。
客户端
导入服务端生成的证书即可使用
推荐使用:
- Windows: OpenVPN
- Mac: Tunnelblick
- Android: OpenVPN
- iPhone: OpenVPN
iPhone 需要美区账号下载 OpenVPN,请自行解决。
更新
可通过一键脚本部署服务 openvpn-install