搭建个人虚拟网络通道

为了实现个人电脑和公司电脑的通信,同时便于应急操作,采用云服务器作为中转的解决方案。本文旨在详细记录此次配置过程。

1. 云服务器部署 OpenVPN Docker

1.1 生成OpenVPN配置

# 创建配置目录
OVPN_DATA="ovpn-data"
docker volume create --name $OVPN_DATA

# 初始化配置(替换SERVER_IP为云服务器公网IP)
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://SERVER_IP

# 生成CA和服务器证书(设置强密码)
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

1.2 启动OpenVPN容器

# 可自定义暴露端口
docker run -d \
  --name openvpn \
  -v $OVPN_DATA:/etc/openvpn \
  -p 1194:1194/udp \
  --cap-add=NET_ADMIN \
  --restart unless-stopped \
  kylemanna/openvpn

1.3 防火墙放行UDP

我的是阿里云服务器,仅需在控制台安全组开放

sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --reload

2. 生成客户端配置

2.1 创建客户端证书

# 生成家用笔记本配置(替换home-laptop为客户端名称)
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full home-laptop nopass

# 生成公司笔记本配置
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full office-laptop nopass

# 生成手机配置
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full iphone-mobile nopass

2.2 导出客户端配置文件

# 导出家用笔记本配置
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient home-laptop > home-laptop.ovpn

# 导出公司笔记本配置
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient office-laptop > office-laptop.ovpn

# 导出手机配置
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_getclient iphone-mobile > iphone-mobile.ovpn

2.3 固定设备的 ip

在 ccd 目录下的 文件名称和 生成配置的名称保持一致

2.4 修改路由配置(关键步骤)

编辑生成的 .ovpn 文件,在文件末尾添加以下内容,确保仅VPN子网流量通过隧道:

# 禁用流量全局
;redirect-gateway def1
route 10.8.100.10 255.255.255.0
route 10.8.100.8 255.255.255.0
route 10.8.100.1 255.255.255.0

更多配置说明看下面的例子

3. 客户端连接配置

3.1 安装OpenVPN客户端

  • 家用和公司笔记本:安装 openvpn下载(macOS推荐)或其他OpenVPN客户端。

3.2 导入配置文件

  • *.ovpn 分别导入对应的设备。

3.3 连接测试

  • 两台笔记本分别连接VPN,确认获取的IP(家用为 10.8.100.8,公司为 10.8.100.10)。
ping 10.8.100.8

4. 访问公司笔记本内容

4.1 启用公司笔记本服务

  • 确保公司笔记本开启所需服务(远程连接SSH、文件共享)

4.2 通过VPN IP访问

  • 家用笔记本 使用公司笔记本的VPN IP( 10.8.100.10)直接访问服务:
# SSH示例
ssh username@10.8.100.10

# AFP文件共享(macOS)
afp://10.8.100.10

5. 验证流量分流

  • 检查路由:连接VPN后,在终端运行 netstat -nr 确认默认路由未指向VPN。
  • 访问测试:访问 ipleak.net 确认公网IP仍是家庭网络,而非云服务器IP。

杂项

故障排查

  • 连接失败:检查云服务器安全组和防火墙是否开放UDP 1194。
  • 无法访问服务:确认公司笔记本本地防火墙允许来自VPN子网(10.8.100.0/24)的连接。
  • IP冲突:若公司网络已使用 10.8.100.0/24,需在生成配置时通过 -s SUBNET 参数修改VPN子网。

安全建议

  • 定期更新证书:使用 ovpn_revokeclient 撤销不再使用的证书。
  • 启用TLS加密:在 ovpn_genconfig 中添加 -e 'tls-crypt' 提升安全性。
  • 监控日志:通过 docker logs openvpn 检查异常连接。
posted @ 2025-02-12 16:23  晨米酱  阅读(67)  评论(0)    收藏  举报