我已经有一段时间没有设置类似的配置了...这就是为什么我有点困惑。
所以我有一个装有 Ubuntu 22.04 的盒子,上面有两张 LAN 卡。我的网络看起来就是这样的。
路由器[192.168.88.1/24]:
- 乌班图盒 [192.168.88.13]
- UBUNTU BOX [192.168.0.1] LAN <-> WiFi 路由器 [192.168.0.2] LAN + 客户端 DHCP 服务器 [192.168.89.0] WiFi
目前,我可以为连接到 AccessPoint 的客户端设置互联网。
因此每个客户端都可以连接到 IP 地址为 192.168.89.X 的 WiFi 并 ping 任何互联网地址。不幸的是,此 WiFi 的任何客户端都无法 ping 192.168.89.X 的任何地址。88.X 网络。
我已经关闭了 IP 转发,并向 iptables 添加了一些规则。我认为现在规则太多了,因为我尝试了几种方法……
网络
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.88.13 netmask 255.255.255.0 broadcast 192.168.88.255
inet6 fe80::2ce9:d972:ce72:f7d8 prefixlen 64 scopeid 0x20<link>
ether 00:be:43:84:cd:35 txqueuelen 1000 (Ethernet)
RX packets 48016092 bytes 26505597173 (26.5 GB)
RX errors 0 dropped 47765 overruns 0 frame 0
TX packets 123449070 bytes 180432950103 (180.4 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 125 base 0x1000
enx9cebe88109ac: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
ether 9c:eb:e8:81:09:ac txqueuelen 1000 (Ethernet)
RX packets 77389 bytes 58389787 (58.3 MB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 109331 bytes 103341907 (103.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 10728417 bytes 3340060879 (3.3 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10728417 bytes 3340060879 (3.3 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp0s12f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.88.7 netmask 255.255.255.0 broadcast 192.168.88.255
inet6 fe80::c9a2:b0e3:aafb:f440 prefixlen 64 scopeid 0x20<link>
ether 80:38:fb:fc:ce:7a txqueuelen 1000 (Ethernet)
RX packets 123977727 bytes 160442634118 (160.4 GB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 47523184 bytes 17237110530 (17.2 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
iptables
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i enx9cebe88109ac -o enp1s0 -j ACCEPT
-A FORWARD -i enp1s0 -o enx9cebe88109ac -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j ACCEPT
端口转发已开启。
感谢帮助。
答案1
从您的描述中我不清楚设备是如何相互连接的。请画一张简单的图,包括设备、它们的接口以及它们之间的网络(互联网路由器、作为 LAN 之间路由器的 Linux 机箱、Wi-Fi 路由器等)。然后应该很容易确定连接断开的原因。
第一个可能的问题
很可能某个设备的路由表中缺少数据,该设备(可能是 Wi-Fi 路由器)不知道将数据包路由到 192.168.88.0/24 网络的何处。为了便于分析,您需要附上设备(包括 Wi-Fi 路由器)的路由表列表。
ip route
网络上的邻居列表也很有用:
ip neigh
每个路由器(包括 Ubuntu 盒)都必须启用 IP 转发,否则路由器无法在其接口之间将数据包从一个网络转发到另一个网络!
假设解决方案:
在Wi-Fi路由器上添加路由条目:
- 目标网络:192.168.88.0
- 掩码:255.255.255.0
- 下一跳地址(网关):192.168.0.1
第二个问题
如果两个接口enp1s0
和wlp0s12f0
都属于同一设备,则这是错误的。接口位于同一网络上,只是地址不同,同一设备在同一网络上通信时有两个并发路径,这可能会造成混乱。关闭接口wlp0s12f0
。以太网enp1s0
比无线网络具有更好的性能,尤其是可靠性。