搭建 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 表示账户已经注销。

客户端

导入服务端生成的证书即可使用

推荐使用:

iPhone 需要美区账号下载 OpenVPN,请自行解决。

更新

可通过一键脚本部署服务 openvpn-install

参考