企业里用了多年的传统VPN,最近总出问题——出差的销售传1G的审批单要10分钟,分支办公室的服务器连不上,运维周末加班连生产服务器还要绕好几层权限,很多公司都在盘算着换成WireGuard这个号称“下一代VPN协议”的东西,但迁移时坑不少,得一步步来,别贸然直接替换。
一、为什么企业要从传统VPN迁去WireGuard
1.1 传统VPN的日常痛点
我们常用的传统VPN比如IPsec、OpenVPN,用了几年后很容易暴露痛点:速度慢是最直观的,传大文件、远程桌面像蜗牛爬;配置复杂,刚上手的技术要查好几天资料,还要处理证书过期、路由冲突的问题;移动端体验差,旧VPN客户端占内存大,手机用1小时就掉电快;服务器负载高,同时50人在线就能把CPU占满一半,还会影响其他业务的正常运行。举个真实例子:我朋友的电商公司618期间,OpenVPN同时在线50人,直接卡崩了生产环境的临时调试权限,后来换了WireGuard就再也没出过这类问题。
1.2 WireGuard的适配场景
WireGuard更适合这几类企业场景:一是远程办公,员工随时连内网获取数据;二是分支办公室组网,北京、上海、广州的分公司要互通服务器资源;三是对速度敏感的业务,比如传大日志、远程操控服务器;四是服务器资源紧张的小公司,想减少CPU和内存的占用,降低运维成本。
二、WireGuard和传统VPN的优劣势对比
2.1 WireGuard的核心优点
用生活化的话讲,WireGuard就像给企业网络铺了条高速专用小路,好处很明显:配置极简,几行代码就能搞定,比传统VPN少了几十步操作;速度快,用的是现代加密方式,没有冗余步骤,跑起来是传统VPN的3-5倍;资源省,100人在线的话,CPU占用不到传统VPN的1/10,服务器负载低;移动端友好,安卓和苹果都有官方APP,体积小不占内存,后台稳定性好。
2.2 WireGuard的不足
它也不是完美的:一是新,有些2020年之前的老系统比如CentOS6不支持,得先升级内核,对老设备不友好;二是容错性稍差,断网重连比传统VPN慢几秒钟,适合对延迟敏感但对断连容忍度稍高的场景;三是日志少,排查问题要手动添加日志,不像传统VPN有默认的详细日志,出问题得花时间找;四是小部分工业设备不支持,这类场景得单独适配。
三、迁移过程中必须注意的关键事项
3.1 先测试再切换,别直接替换
很多企业踩过的大坑:直接停掉传统VPN,启动WireGuard,结果内网完全不通,业务直接断了。正确的做法是并行跑,旧VPN保留,WireGuard加在旁边,测试没问题再逐步切流量。比如先找10个测试用户,用WireGuard连3天,测能不能访问财务系统、生产服务器,测大文件传输速度,确认没问题再扩大范围。
# 生成服务端私钥,这是服务端的专属身份证,绝对不能泄露
wg genkey > server_private.key
# 从服务端私钥生成公钥,要发给所有客户端
wg pubkey < server_private.key > server_public.key
# 生成客户端私钥,同理别外泄
wg genkey > client_private.key
# 客户端公钥,要发到服务端配置里
wg pubkey < client_private.key > client_public.key
3.2 密钥别泄露,管理要规范
WireGuard的核心就是密钥,就像每个人的银行卡密码,服务端私钥不能给任何人,客户端私钥也不能外传,否则别人就能轻松连进企业内网。还要注意:服务端的公钥要和客户端的公钥一一对应,不能搞反,比如把客户端公钥写到服务端,服务端公钥写到客户端。
3.3 防火墙和端口必须开放
WireGuard用的是UDP端口,默认是51820,很多人会忘开这个端口,导致外面的设备连不上企业VPN。除了服务器上的防火墙,云服务器还要在云控制台的安全组里开放这个端口,不然哪怕配置全对,也连不上。
# 检查防火墙是否运行
systemctl status firewalld
# 给服务器添加51820/UDP端口,永久生效
firewall-cmd --add-port=51820/udp --permanent
# 重载防火墙规则,让配置生效
firewall-cmd --reload
# 查看已开放的端口,确认配置成功
firewall-cmd --list-ports
3.4 内网IP段绝对不能冲突
企业内网段都是固定的,比如行政用192.168.1.0,技术用192.168.2.0,分支用192.168.3.0,WireGuard的虚拟网段要选一个完全没人用的私有段,比如10.8.0.0/24,要是选192.168.1.0,会和行政内网冲突,连错电脑。每个客户端的虚拟IP也要唯一,不能重复。
[Interface]
# 服务端私钥,从刚才的server_private.key读取
PrivateKey = 服务端私钥内容
# 服务端虚拟内网地址,选未使用的段
Address = 10.8.0.1/24
# 监听的UDP端口
ListenPort = 51820
# 允许服务端转发虚拟网和真实内网的包
Forwarding = true
[Peer]
# 客户端公钥,从client_public.key读取
PublicKey = 客户端公钥内容
# 客户端唯一的虚拟IP
AllowedIPs = 10.8.0.2/32
3.5 移动端和多设备的适配
员工用手机、平板连VPN时要注意:导出客户端配置时,要把私钥带全,不能只带公钥,不然连不上;安卓要允许APP后台自启动,苹果要开启VPN权限,不然杀进程后会断连;多设备用同一个账号的话,要在服务端加对应的Peer,每个设备对应一个公钥和虚拟IP。
[Interface]
# 客户端私钥
PrivateKey = 客户端私钥内容
# 客户端虚拟IP
Address = 10.8.0.2/32
[Peer]
# 服务端公钥
PublicKey = 服务端公钥内容
# 企业的公网IP或域名
Endpoint = 你的企业公网IP:51820
# 允许访问的所有内网段,包括互联网
AllowedIPs = 0.0.0.0/0, ::/0
# 每25秒发一次心跳,防止路由器踢掉连接
PersistentKeepalive = 25
四、迁移后的收尾和优化
4.1 小流量验证没问题再全量
先让10%的员工用WireGuard,比如运维、销售部门,测1周,看有没有断连、访问不了内网资源的情况,对比传输速度,确认没问题后再逐步全量替换,降低风险。
4.2 清理旧配置,做好备份
全量迁移后,别着急删除旧VPN的配置,先备份,保留1周,以防WireGuard出问题随时切回去,之后再删掉旧VPN的端口和规则,节省服务器资源。
从传统VPN迁移到WireGuard,核心是“先测再换,细节盯紧”,只要注意密钥管理、端口开放、IP段规划这些关键点,就能顺利完成升级,大幅提升企业远程办公和内网互通的效率。
评论
围绕“企业VPN架构升级中从传统协议向WireGuard迁移的注意事项”参与讨论