要在 Linux 上创建一个典型的基于 IPv4 的接入点,需要执行以下步骤:
- 用于
hostapd
使例如wlan0
可用于传入连接; - 选择一些本地子网。例如,
192.168.99.0/24
。 - 将该网络中的 IP 地址之一(例如
192.168.99.1/24
)添加到wlan0
. - 启用该网络 (
wlan0
) 和上游(例如eth0
)的转发。 - 将
MASQUERADE
规则插入防火墙以启用 NAT。 - 启动
dnsmasq
或其他 DHCP 服务器来管理客户端的本地 IP 地址。
IPv6 有类似的步骤吗?理想情况下,客户端wlan0
应该看到 IPv6 世界,就好像他们eth0
直接连接到(即不是另一个 NAT,这在 IPv6 世界中不惯用),类似于伪桥接(真正的brctl
桥接可能有问题)。
eth0
如果可以重新连接到另一个网络而不需要重新启动服务基础设施wlan0
(就像 IPv4 的情况一样),那么它也会很有用。
根据使用的是 DHCPv6 还是路由器通告,步骤是否会有所不同eth0
?
答案1
IPv6 有类似的步骤吗?理想情况下,wlan0 的客户端应该看到 IPv6 世界,就好像它们直接连接到 eth0 一样(即不是另一个 NAT,这在 IPv6 世界中是不惯用的),类似于伪桥接(真正的 brctl 桥接可能有问题)。
惯用的 IPv6 等效项您所描述的步骤只是没有 NAT 的路由。 (每个人都忘记了您可以在不进行 NAT 处理的情况下路由数据包。)您的接入点将使用 DHCPv6-PD 获取自己的 /64 前缀 – 自动使上游路由器设置正确的路由 – 并且其他步骤将保持不变(只是没有MASQUERADE
规则),dnsmasq 通过 SLAAC 和/或 DHCPv6 宣布 /64。 NetworkManager 设置的“热点”正是这样做的。
现在,如果您所在的网络不支持 DHCPv6-PD 子委托(不幸的是,许多路由器不支持),那么您可以通过使用 NDP 代理(相当于 ARP 代理的 IPv6)来实现“伪桥接”。有多种代理 NDP 实现,但您想要的是NDPRBRD,尽管现在也存在相同的功能NDPPD。与静态 NDP 代理不同,这些守护进程动态学习哪些 IPv6 地址位于哪一侧,因此您只需设置 SLAAC 来模拟上游接口的 /64,ndprbrd 就会弄清楚。
最后,正如您所说的那样切入点,我想迂腐地指出,真正的“接入点”将是真的桥。不是伪桥,而是一个br0
包含wlan0
AP 和eth0
上行链路的接口 - 使 IPv6 默认工作,并在每个 SSID 有多个 AP 时提供无缝漫游。 (桥接 wlan0 只有在工作站模式下才不可能,但在接入点模式下则完全可能;这就是所有 AP 甚至无线路由器的工作方式。)