路由器配置。通过两个接口共享同一网络

路由器配置。通过两个接口共享同一网络

我有一个路由器 R 和两台主机 A 和 B。它们都运行 Ubuntu 22.04。我对参与设置的所有计算机都拥有物理访问权限和必要的权限,并且我想从 B 到 A 进行 ssh 操作。

我的初始设置包括:

  • 通过以太网电缆将 A 连接到 R(分配的 IP:192.168.0.2)。
  • 使用无线网络将 B 连接到 R(分配的 IP:192.168.0.51)。

问题:我无法从 B 连接到 A。主机 A 似乎无法从 B 访问。

任何人都可以帮助诊断问题,我需要在主机或路由器上修改某些配置或设置吗?

谢谢,我很乐意在需要时提供更多信息

编辑1:

这是来自 A、B 和路由器 R 的 IP 路由的输出。

userk@hosta:~$ ip route
default via 192.168.0.1 dev eth0 proto static metric 100 
192.168.0.1 dev eth0 proto static scope link metric 100

userk@hostb:~$ ip route
default via 192.168.0.1 dev wlp3s0 proto static metric 20600 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
192.168.0.0/24 dev wlp3s0 proto kernel scope link src 192.168.0.226 metric 600

userk@router:~$ ip route
default via 192.168.0.1 dev wlan0 proto static 
192.168.0.0/24 dev lanbr0 proto kernel scope link src 192.168.0.1 
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.1 

编辑2:

userk@router:~$ ip -details link show lanbr0
13: lanbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether f6:37:88:50:d8:bd brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535 
    bridge forward_delay 1500 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 priority 32768 vlan_filtering 0 vlan_protocol 802.1Q bridge_id 8000.f6:37:88:50:d8:bd designated_root 8000.f6:37:88:50:d8:bd root_port 0 root_path_cost 0 topology_change 0 topology_change_detected 0 hello_timer    0.00 tcn_timer    0.00 topology_change_timer    0.00 gc_timer  167.77 vlan_default_pvid 1 vlan_stats_enabled 0 vlan_stats_per_port 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1 mcast_router 1 mcast_query_use_ifaddr 0 mcast_querier 0 mcast_hash_elasticity 16 mcast_hash_max 4096 mcast_last_member_count 2 mcast_startup_query_count 2 mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500 mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3125 mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 


userk@router:~$ ip link show | grep master
6: lan0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lanbr0 state UP mode DEFAULT group default qlen 1000
7: lan1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lanbr0 state UP mode DEFAULT group default qlen 1000
8: lan2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lanbr0 state UP mode DEFAULT group default qlen 1000
9: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master lanbr0 state LOWERLAYERDOWN mode DEFAULT group default qlen 1000

如果我将 wlan0 添加到网桥,则在之前的输出中添加以下行:

11: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lanbr0 state UP mode DORMANT group default qlen 1000

现在,当我连接到 Wifi 网络时,我可以看到通过以太网连接的另一台主机 A,我可以通过 ssh 连接到它!

我注意到 /etc/systemd/network 中有以下文件

userk@router:~$ sudo cat /etc/systemd/network/21-lanbr-bind.network 
[Match]
Name=lan0 lan1 lan2 lan3

[Network]
Bridge=lanbr0

我将 wlan0 添加到 21-lanbr-bind.network 中的接口列表中,并希望在启动时在网桥中设置接口。那挺好的!

wlan0 有一个专用文件

userk@router:~$ sudo cat /etc/systemd/network/30-wlan0.network 
[Match]
Name=wlan0

[Network]
#ConfigureWithoutCarrier=true
BindCarrier=eth0

#static setup
Address=192.168.0.1/24
Gateway=192.168.0.1
DNS=192.168.1.1

IPForward=yes
DHCPServer=no

该文件是否会产生任何冲突? BindCarrier=eth0 是否正确或需要?

答案1

通过两个接口共享同一网络

您应该使用交换机或网桥来做到这一点。当然,当一个链路是有线链路而另一个链路是无线链路时,你会怎么做?

Linux 可以将两个物理接口连接成一个虚拟桥(例如软件交换机)。这在塑料家用路由器上很常见(这是什么?)

192.168.0.0/24 dev lanbr0 原型内核范围链接 src 192.168.0.1

看起来它可能已经是一座桥了。通过运行以下命令进行确认:

ip -details link show lanbr0

如果你在那里看到“桥”这个词,那就是了。

运行此命令以找出已连接到它的内容:

ip link show | grep master

这里的每一行都是桥中的一个链接,它会告诉您它位于哪个桥中(希望您没有超过lanbr0

我打赌以下内容是正确的:您有一个 enp3s0 (有线链接)或类似的lanbr0但没有wlan0

  • 添加-wlan0lanbr0ip link set dev wlan0 master lanbr0
  • wlan0不会有 IP,这是正常的 -lanbr0现在您的有线和无线连接都像交换机一样在第 2 层上。
  • 无论您的有线设备使用什么 DHCP 服务器,您的无线设备现在都将使用。
  • 如果仍然不起作用,请禁用 AP 隔离。

相关内容