Lan Tian @ Blog

pfSense 配置 IPv6 多 WAN 自动切换

本文写于 155 天前, 随着软件更新、外部链接失效等原因,这些内容可能已经不再适用。 如果你发现这些问题,欢迎在评论区指出。

就在几天前,HE.NET Tunnelbroker 的法国服务器出了一次故障。因为我在配置 Kimsufi 服务器时,将 Kimsufi 原生的 IPv6 分给了 ESXi 单独使用(见这篇文章),pfSense 只具有原生 IPv4 并通过 Tunnelbroker 获取 IPv6 地址,所以这次服务器上的所有虚拟机都失去了 IPv6 连接。更严重的是,由于我在服务器上也参照这篇文章搭了个 NAT64 服务,为了优先使用 IPv6,我设置了 pfSense 的 DNS 解析优先使用 Google DNS 的 NAT64 解析服务器,就是 2001:4860:4860::64 和 2001:4860:4860::6464 这两个,只在这两个 DNS 全部失效后才去使用 IPv4 解析。由于 IPv6 不通了,而 pfSense DNS 服务器的超时又很长,内部的 DNS 解析几乎全部失败。

为了防止 IPv6 出问题后再次引起连锁反应,我准备使用多个 Tunnelbroker 互相作为备份,并配置 pfSense 的 Multi-WAN Failover 功能,在一个 Tunnelbroker 断线后立即切换到其它 Tunnelbroker,保证 IPv6 对外连接不中断。

设置额外的 Tunnelbroker

目前还在运行的 Tunnelbroker 列表可以直接查看 Wikipedia 页面,List of IPv6 tunnel brokers。其中我申请成功的是 HE.NET,IP4Market 和 NetAssist,其中 NetAssist 的服务器之前工作正常,但现在常年不通。

IP4Market 是一个俄罗斯网站,网页也是俄文的,但是通过 Google 翻译可以毫无障碍地完成申请。

注册完成后就可以获得服务器和客户端的 IPv4、IPv6 地址等信息:(下图 IP 地址被截断)

IP4Market 界面信息

接下来就用这些信息在 pfSense 中创建隧道。在 Interface / Assignments / GIFs 中添加一条 GIF 隧道:(IP 依然被截断)

pfSense 配置信息

然后给这条隧道创建一个 Interface。在 Interface / Assignments 界面中,添加刚刚创建的这条隧道,并进入这个 Interface 的设置界面,启用它:

pfSense 启用 Interface

进入 Status / Gateways 界面确认隧道对端可以 ping 通就完成了。

设置多 WAN 自动切换

接下来就要设置在一个隧道断线时自动切换的功能了。在 pfSense 的 System / Routing 界面中可以看到 Gateway Groups 选项,它可以将多个网关(包括隧道的对端)作为一个整体来使用,并实现负载均衡、断线切换等功能。

在 System / Routing / Gateway Groups 中添加一个网关组,并将几个 Tunnel 的网关按优先级从高到低设置成 Tier 1,Tier 2 等等,并将 Trigger Level(切换条件)设置成 Member Down(成员离线):

pfSense Gateway Group 设置

但是此时如果你将默认网关设置成这个 Gateway Group,你会发现当你的主要网关掉线后,尽管 Gateway Group 已经作出切换,网内的其它机器还是无法访问 IPv6。这是因为 LAN 中每台机器的 IPv6 地址一般而言是从主要网关(我的是 HE.NET)的地址池分配的,而其它的 Tunnelbroker(例如 IP4Market)不认识这个 IPv6 地址,自然不会让数据包通过。即使数据包通过了,远程服务器返回数据时也会发回到主要网关(我的是 HE.NET)的地址上,但此时这个网关已经离线,也无法将数据转发回来。

解决方法是用 pfSense 的 NPt(Network Prefix Translation,网络前缀转换)功能。这个功能可以将一个 IPv6 子网的地址 1:1 映射到另一个子网,在此处就是将 HE.NET 的地址映射到 IP4Market 的地址,让它认出这些地址并且放行。

进入 Firewall / NAT / NPt,添加一个条目,将 LAN 上的地址映射到 IP4Market 提供的地址池:

pfSense NPt 配置

之后 LAN 上的机器也就可以通过 IP4Market 的 Tunnelbroker 上网了。

版权所有 2019 Lan Tian @ Blog

本文链接 https://lantian.pub/article/modify-website/pfsense-ipv6-multi-wan-switching.lantian

CC BY-NC-SA 4.0 协议授权,转载请署名,禁止商业用途,请勿曲解原义

Lan Tian @ Blog 提醒您:

文章千万字,署名第一字。转载不规范,作者两行泪。

 

« 上一篇文章:
nginx 配置 LDAP 认证
    昵称
    邮箱
    网站
     
    Warning: unpack(): Type V: not enough input, need 4, have 0 in /srv/www/lantian.pub/usr/themes/lantian/vendor/itbdw/ip-database/src/IpLocation.php on line 158

    Warning: unpack(): Type V: not enough input, need 4, have 0 in /srv/www/lantian.pub/usr/themes/lantian/vendor/itbdw/ip-database/src/IpLocation.php on line 158

    Warning: unpack(): Type V: not enough input, need 4, have 1 in /srv/www/lantian.pub/usr/themes/lantian/vendor/itbdw/ip-database/src/IpLocation.php on line 473

    Warning: unpack(): Type V: not enough input, need 4, have 0 in /srv/www/lantian.pub/usr/themes/lantian/vendor/itbdw/ip-database/src/IpLocation.php on line 158

    Warning: unpack(): Type V: not enough input, need 4, have 1 in /srv/www/lantian.pub/usr/themes/lantian/vendor/itbdw/ip-database/src/IpLocation.php on line 473

    Warning: unpack(): Type V: not enough input, need 4, have 0 in /srv/www/lantian.pub/usr/themes/lantian/vendor/itbdw/ip-database/src/IpLocation.php on line 158