我会为你详细介绍其中最常用、最安全的两种方案:L2TP/IPsec 和 OpenVPN。
L2TP/IPsec over NAT (最常用,兼容性最好)
这种方案结合了 L2TP 的隧道封装和 IPsec 的加密,是目前 Windows、macOS、iOS、Android 等操作系统原生支持的标准 VPN 协议,它可以在 NAT(网络地址转换)环境下工作,适合大多数家庭或小型办公室场景。
优点:
- 原生支持:无需安装第三方客户端,所有主流操作系统都内置支持。
- 配置相对简单:RouterOS 上的配置步骤清晰。
- 安全性高:使用 IPsec 进行加密。
缺点:
- 性能一般:相比 OpenVPN,在处理大量数据时性能稍弱。
- 端口易被封锁:使用 UDP 端口 500 (IPsec NAT-T) 和 1701 (L2TP),在某些网络(如公司、酒店)可能被限制。
详细配置步骤:
假设环境:
- RouterOS 的 WAN(外网)接口:
ether1 - RouterOS 的 LAN(内网)网段:
168.88.0/24 - 你想让 VPN 客户端获得的 IP 网段:
168.99.0/24
步骤 1:配置 IPsec 模板 (IKEv2)
这是最核心的加密部分,定义了 VPN 客户端和服务器之间的安全策略。
-
进入
/ip ipsec菜单。 -
创建一个新的 Proposal(加密提议):
/ip ipsec proposal add name=vpn-proposal pfs-group=none enc-algorithms=aes-256-cbc, aes-128-cbc \ hash-algorithms=sha256, sha1 dh-group=modp2048
enc-algorithms: 加密算法,aes-256-cbc是安全且高效的选择。hash-algorithms: 哈希算法,sha256比sha1更安全。dh-group: 密钥交换组,modp2048是一个安全且广泛兼容的选择。
-
创建一个 Address List,用于标识 VPN 客户端将访问的本地网络:
/ip firewall address-list add list=vpn-local-network address=192.168.88.0/24
- 请将
168.88.0/24替换为你自己的 LAN 网段。
- 请将
-
创建一个 Policy(策略),定义哪些流量需要通过 VPN 加密:
/ip ipsec policy add proposal=vpn-proposal dst-address=0.0.0.0/0 \ src-address=192.168.99.0/24 template=yes
dst-address=0.0.0.0/0: 表示所有来自 VPN 客户端的流量都通过 IPsec 加密。src-address=192.168.99.0/24: 这是我们为 VPN 客户端规划的 IP 网段。template=yes: 这意味着这是一个模板,会自动应用到符合条件的新连接上。
步骤 2:配置 L2TP 服务器
- 进入
/ppp菜单。 - 创建一个 Secret(VPN 账号密码):
/ppp secret add name=your_username service=l2tp+ipsec password=your_strong_password \ profile=default local-address=192.168.99.1 remote-address=192.168.99.2-192.168.99.100
name: 你的 VPN 登录用户名。password: 你的 VPN 登录密码。local-address: L2TP 服务器的 IP 地址,通常是网关。remote-address: 分配给 VPN 客户端的 IP 地址池,请确保这个网段不要与你的 LAN 网段冲突。
步骤 3:配置防火墙
这是最容易被忽略但至关重要的一步,用于允许 VPN 流量通过。
- 进入
/ip firewall filter菜单。 - 允许已建立的、相关的、无状态的 IPsec 和 L2TP 流量:
/ip firewall filter add chain=input protocol=udp dst-port=500,4500 action=accept comment="Allow IKE (IPsec)" add chain=input protocol=udp dst-port=1701 action=accept comment="Allow L2TP" add chain=input protocol=esp action=accept comment="Allow ESP (IPsec)"
这三条规则分别允许 IKE (IPsec NAT-T)、L2TP 和 ESP (IPsec 数据包) 的流量进入路由器。
步骤 4:配置 NAT (如果需要)
如果你的 RouterOS 没有开启 NAT,并且你想让 VPN 客户端通过服务器访问互联网,你需要配置 NAT。
- 进入
/ip firewall nat菜单。 - 添加一个源 NAT 规则,将来自 VPN 客户端的流量伪装成路由器的 WAN IP:
/ip firewall nat add chain=srcnat out-interface=ether1 src-address=192.168.99.0/24 \ action=masquerade comment="VPN clients to WAN"
out-interface=ether1: 替换为你的 WAN 接口名称。src-address=192.168.99.0/24: 替换为你的 VPN 客户端 IP 网段。
步骤 5:配置 DHCP 服务器 (可选但推荐)
为了让 VPN 客户端自动获取 IP 地址和 DNS,可以在 VPN 网段上运行一个 DHCP 服务器。
-
进入
/ip dhcp-server菜单。 -
添加一个 DHCP 网络和服务器:
/ip dhcp-server network add address=192.168.99.0/24 gateway=192.168.99.1 /ip dhcp-server add address-pool=vpn-pool disabled=no interface=bridge name=vpn-dhcp \ lease-time=1d
- 你需要先创建一个地址池
/ip pool,名为vpn-pool,范围与remote-address一致。
- 你需要先创建一个地址池
OpenVPN (更灵活、性能更好)
OpenVPN 是一个开源的 VPN 应用,它使用 SSL/TLS 协议进行加密,非常灵活且安全。
优点:
- 安全性极高:使用 OpenSSL 加密库,支持多种强加密算法。
- 性能优秀:通常比 L2TP/IPsec 性能更好。
- 跨平台:有官方和优秀的第三方客户端(如 OpenVPN Connect, Tunnelblick)。
- 功能丰富:支持用户证书认证、双因素认证等。
缺点:
- 需要安装客户端:原生系统不支持,必须安装专用客户端。
- 配置更复杂:需要在服务器和客户端都进行配置。
RouterOS 端配置步骤 (简化版):
步骤 1:创建 OpenVPN 服务器实例
- 进入
/interface ovpn-server菜单。 - 添加一个新的服务器实例:
/interface ovpn-server server set enabled=yes \ auth=sha256,aes-256-cbc \ certificate=server-cert \ ca=ca-cert \ key=server-key \ cipher=aes-256-cbc \ port=1194 \ mode=ip
- 注意:
certificate,ca,key需要提前在/system certificate中创建,你可以使用 RouterOS 的内置工具生成自签名证书,或者使用由受信任 CA 签发的证书。 port=1194: OpenVPN 默认端口,可以修改为其他端口(如 443)以绕过封锁。
- 注意:
步骤 2:配置用户认证
OpenVPN 可以使用证书或用户名/密码认证,这里介绍最简单的用户名/密码方式。
- 进入
/ppp secret菜单,添加一个用户(与 L2TP 相同):/ppp secret add name=openvpn_user password=openvpn_pass profile=default
步骤 3:配置防火墙
- 允许 OpenVPN 端口:
/ip firewall filter add chain=input protocol=udp dst-port=1194 action=accept comment="Allow OpenVPN"
步骤 4:配置 NAT (如果需要)
与 L2TP 类似,为 VPN 客户端流量添加 NAT 规则,OpenVPN 默认会创建一个虚拟网卡 ovpn-server-out1,你的客户端 IP 会从这个接口获取。
/ip firewall nat add chain=srcnat out-interface=ether1 src-address=10.8.0.0/24 action=masquerade comment="OpenVPN clients to WAN"
src-address=10.8.0.0/24: OpenVPN 默认的客户端网段,请根据实际情况调整。
客户端连接与测试
-
获取连接信息:
- L2TP: 你需要知道 RouterOS 的公网 IP 地址、你设置的用户名和密码。
- OpenVPN: 你需要下载 RouterOS 生成的
client.ovpn配置文件,或者手动配置客户端,包含服务器公网 IP、端口、证书(如果使用)和用户名/密码。
-
连接测试:
- 连接成功后,检查你的客户端 IP 地址,看是否从你设置的 IP 池中获得。
- 尝试访问你内网中的某台设备(如
168.88.1),看是否能连通。 - 尝试访问
whatismyip.com,看显示的 IP 地址是否是你 RouterOS 的公网 IP,以确认 NAT 是否生效。
安全注意事项
- 使用强密码:为 VPN 账号设置复杂的密码。
- 更新固件:保持 RouterOS 固件为最新版本,以修复安全漏洞。
- 限制访问:如果只允许特定 IP 访问你的 VPN 服务器,可以在防火墙规则中添加
src-address条件。 - 禁用不安全的协议:如非必要,避免使用 PPTP,它已被证明不安全。
- 考虑端口转发:如果你的 RouterOS 在 NAT 之后(如家庭光猫),需要在光猫上做端口转发,将
UDP 500,UDP 4500,UDP 1701(L2TP) 或UDP 1194(OpenVPN) 转发到 RouterOS 的内网 IP。
希望这份详细的指南能帮助你成功搭建 RouterOS VPN 服务器!如果你在某个步骤遇到问题,可以提供具体的错误信息,我会尽力帮你解决。
