温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
一、需求场景
有两台运行 Kerio Control 的防火墙 A 与 B,已创建 VPN 通道,有一特殊链接 C,仅有 B 可以访问,A 无法直接访问,因此在不额外增加设备的情况下,当 A 内网下的主机 D 想要直接访问 C,需要将流量转发到 B 去处理。
再复杂一点,可能 B 也无法直接处理,需要 B 内网下的主机 E 来处理(比如 E 安装了代理)。
所以原先的请求路由是:D -> A -> C,现在变成:D->A->B->E->C。
二、部署方案
1、原理
A 与 B 创建 VPN 时,可以添加自定义路由,当防火墙识别到该流量时会自动转发到 VPN 接口处理。同时结合流量规则,可将流量指向目标设备处理。
2、收集目标 IP
C 可能是 IPv4、IPv6 或域名,如果是虚名需要将此域名解析为 IP,如果使用了 CDN,可能需要进一步转换为 CIDR。
如果是 IPv6,参考《Kerio Control 防火墙组建 VPN 后内网 IPv6 互通方案》,需要进一步处理使 IPv6 内网互通后,方可正常转发 IPv6 流量。
3、A 自定义路由
在 A 的界面里,找到与 B 的 VPN 链接,将上面的目标 IP 添加到自定义路由,保存后,在 A 的路由表里可以看到新增的自定义路由。
添加后,A 收到访问 C 的请求,就会转发到 B。
4、A/B 配置地址组
A 默认禁止访问,因此需要在流量规则中放行,为避免扩大访问,可以配置 IP 地址组。
在 A 的IP 地址组中,创建一个新的 IP 地址组,比如 iptv 地址组,将上面的目标 IP 添加进来,这里可以同时添加 IPv6。
5、A/B 配置服务
同理,为避免扩大访问,可以配置服务。
在 A 的服务中,新增一个服务,比如iptv 服务,根据 C 的特点可以指定协议、端口等。
6、A 配置流量规则
接下来就可以在 A 的流量规则中,新增一条放行规则。
比如名称为转发请求,源为可信/本地接口(为方便调试,也可以再添加防火墙),目的地为iptv 地址组,服务为iptv 服务,IP 版本为任何,操作为 允许。
7、B 配置流量规则
在 B 的流量规则中,新增一条类似的放行规则,或者如果要转发到 E 处理:
比如名称为转发请求,源为所有 VPN 通道(为方便调试,也可以再添加防火墙),目的地为iptv 地址组,服务为iptv 服务,IP 版本为任何,操作为 允许(如果转发则为 MAP E 的 IP 及代理端口)。
三、测试
配置好后,请求 D->A->B->E->C 就完成了,需注意的是,我们这里的流量规则只放行了特定的服务iptv 服务,因此可以是用 curl测试,使用 ping、traceroute 等命令仍然是不通的。
四、注意事项
- 若使用 E 来转发 IPv6 流量,注意代理软件需要同时监听 IPv6(很多默认只监听 IPv4)。
- 若对 IPv6 进行 CIDR 缩减,目前测试 Kerio Contro 不支持
/56块。
针对 /56 块问题,AI 回答是:
1、直连网络中一般建议使用 /64 子网,因为 IPv6 的 NDP(邻居发现协议)通常是以 /64 进行工作,跨 /64 的邻居发现/直连可能失败。
2、针对 IP 明明在 /56 范围内却无法被正确匹配的问题,很可能就是出在 NDP 跨 /64 时无法工作:即使路由表显示 /56,接口可能仍只处理其实际所配置的 /64 段。