背景
我一直完美地使用 WIFI 路由器作为家庭网关,直到我的 ISP 似乎限制了连接的设备数量。目前 ISP 没有任何针对更多设备的切实升级计划。所以我正在尝试设置基于 Linux 的 NAT 路由器。
成分
- Raspberry Pi 2 型号 B (RPi),带有内置以太网适配器和 4 个 USB 端口。
- USB 100Mbit 以太网适配器。
- 有 4 个端口的交换机。
硬件设置
RPi 的内置以太网适配器(即 eth0)将用作其 WAN 适配器。交换机将通过 USB 以太网适配器(即 eth1)插入 RPi。因此,此 USB 以太网适配器应该用作 LAN 适配器。有线设备(例如我的笔记本电脑和 WIFI 路由器)将通过交换机连接,而无线设备显然将通过 WIFI 路由器连接。
软件设置
我在 RPi 上配置了 dnsmasq,以提供 DHCP 和 DNS 服务。WAN 适配器 (eth0) 通过 DHCP 从 ISP 获取 IP 地址和 DNS。LAN 适配器 (eth1) 配置了静态地址 10.0.1.1/24。路由和 NAT 配置如下:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -o eth0 -i eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我也打开了ipv4转发。
测试和结果
测试 1。
首先,我模拟使用我的 WIFI 路由器连接 ISP,即我将 RPi 的 WAN 适配器插入路由器的一个 LAN 插槽。然后我将笔记本电脑直接连接到 RPi 的 LAN 适配器。我的笔记本电脑通过 DHCP 获取 IP 地址 10.0.1.129,正如我所料。我可以通过 RPi 成功地从笔记本电脑 ping 到路由器。我还可以从笔记本电脑访问路由器提供的管理网页。所以一切都运行良好。
测试 2。
我把 RPi 插到真实的通过其 WAN 适配器连接 ISP 电缆。笔记本电脑仍插入 RPi 的 LAN 适配器。我在 RPi 上有互联网连接。我可以从笔记本电脑解析 WAN 主机名,但我无法 ping 它并在那里打开任何 WAN 网页。因此测试 2 失败。
后来我采取了另一种方法。
我有一个双模 USB WIFI 加密狗,当插入运行 Windows XP/7/8 的计算机时,它可以用作 WIFI 客户端或 WIFI 路由器。我将 ISP 电缆插入笔记本电脑,以便可以从笔记本电脑访问互联网。然后,我将 USB WIFI 加密狗插入笔记本电脑并将其配置为 WIFI 路由器。通过这种方法,我的 iPhone、iPad 和笔记本电脑可以成功共享互联网连接。我相信这种方法是由 Windows ICS(互联网连接共享)服务实现的。
这是我的两个问题:
- Windows ICS 服务和基于 Linux 的 NAT 和路由有什么区别,特别是我实现的配置?我以为 Windows ICS 只是 NAT 的一个子集。
- 我能否让 RPi 代替笔记本电脑作为家庭网关?毕竟笔记本电脑耗电量更大。