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