Mikrotik 和 VPN 仅适用于特定网站

Pau*_*aul 7 router vpn

我国的网络审查日益加强。显而易见的解决方案是使用VPN,但它会减慢连接速度并且无法保证公共VPN服务的无害性。

所以我想到了以下解决方案:

路由器将以传统方式访问大多数网站,但会保持持续的 VPN 连接,伪装成一个额外的网络接口。如果我访问受审查的网站之一,路由器将通过此虚拟接口传递流量。

这可以用 RouterOS 实现吗?怎么做?

我的路由器是 RB2011UiAS-2HnD-IN,RouterOS v 6.30.2。

Cha*_*a0s 11

假设您将使用 PPTP VPN 来演示您需要运行的命令。
由于 PPTP 的加密已经被破坏了很长时间,我建议您使用更安全的东西(例如 OpenVPN)。无论您使用哪种 VPN/隧道技术,原理都是相同的。

因此,首先创建 VPN 而不添加默认网关路由。

/interface pptp-client
add add-default-route=no allow=pap,chap,mschap1,mschap2 connect-to=VPN_SERVER_IP \
dial-on-demand=no disabled=no max-mru=1440 max-mtu=1440 mrru=dis \
name=VPN_NAME password="MY_STRONG_PASSWORD" profile=default-encryption user=USERNAME
Run Code Online (Sandbox Code Playgroud)

然后通过带有新路由标记的 VPN 添加默认网关来创建新的路由表vpn。这将允许您通过 VPN 路由数据包。

/ip route add dst-address=0.0.0.0/0 distance=1 gateway=VPN_GATEWAY_IP routing-mark=vpn
Run Code Online (Sandbox Code Playgroud)

如果您想在 VPN 关闭时阻止传出流量,则下一条路由是可选的:

/ip route add dst-address=0.0.0.0/0 type=unreachable distance=2 routing-mark=vpn
Run Code Online (Sandbox Code Playgroud)

我们还需要对将通过 VPN 接口离开的数据包进行一些 NAT。

/ip firewall nat add chain=srcnat out-interface=VPN_NAME action=masquerade
Run Code Online (Sandbox Code Playgroud)

现在我们添加mangle将匹配我们想要的目标 IP的规则mark-routing并对它们执行 a以便它们将使用vpn我们创建的路由表。

/ip firewall mangle add chain=prerouting dst-address-list=VPN action=mark-routing new-routing-mark=vpn
Run Code Online (Sandbox Code Playgroud)

最后Address List,我们使用要通过 VPN 路由的 IP 在防火墙上创建一个。

/ip firewall address-list add list=VPN address=1.1.1.1
/ip firewall address-list add list=VPN address=2.2.2.2
/ip firewall address-list add list=VPN address=3.3.3.3
/ip firewall address-list add list=VPN address=4.4.4.4
Run Code Online (Sandbox Code Playgroud)

您可以根据需要多次重复最后一条规则,以通过 VPN 路由尽可能多的 IP。

请记住,上述规则不提供任何关于谁在您的路由器后面将能够访问 VPN 等的安全性。您可能需要在规则上添加适当的源 IP 检查以使其更安全。

此外,此方法将通过 VPN 路由整个 IP。如果您需要通过 VPN 路由特定端口/协议,您只需创建额外的 mangle 规则来匹配您需要的任何内容并对其执行操作mark-routing

  • @mac 在最新版本的 RouterOS 中,您可以在地址列表中添加域,它会自动将它们解析为同一地址列表中的地址。它遵循 dns 记录的 TTL,因此如果 IP 地址更改,它将自动保持最新状态。L7 匹配有点像 PITA 并且非常需要资源:( (2认同)