我有一个目标服务器,当前我的网络掩码被错误地配置为 255.0.0.0。其正确的网络掩码是 255.255.255.128。我的源服务器也是 /25 网络,所以它们都有相同的子网掩码,但都属于两个不同的 vlan。
我的问题如下:
我可以通过属于不同 vlan 和 IP 范围(如 157)的另一台服务器成功连接到我的目标服务器。。. ,但是,我无法从 10.10.126 连接到我的目标服务器。. 在目标服务器中跟踪路由后,我发现服务器在本地检查源 IP 是否属于其自己的本地子网。如果它的网络掩码配置错误,为什么它允许来自 157.* 服务器的 ssh 连接?它是如何做到的?
当前错误配置:
Destination server: 10.10.127.* netmask 255.0.0.0
当前正确的配置:
Source server: 10.10.126.* Mask:255.255.255.128
测试tcpdump
:
[root@Destination_server ~]# tcpdump -vvv -i eno16780032 host 10.10.126.*
tcpdump: listening on eno16780032, link-type EN10MB (Ethernet), capture size 65535 bytes
21:36:28.403812 IP (tos 0x0, ttl 64, id 48314, offset 0, flags [DF], proto TCP (6), length 60)
10.10.126.*.60692 > Destination_server.ssh: Flags [S], cksum 0x3c87 (correct), seq 379301407, win 29200, options [mss 1380,sackOK,TS val 495338
91 ecr 0,nop,wscale 7], length 0
21:36:28.403928 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:29.400303 IP (tos 0x0, ttl 64, id 48315, offset 0, flags [DF], proto TCP (6), length 60)
10.10.126.*.60692 > Destination_server.ssh: Flags [S], cksum 0x3b8d (correct), seq 379301407, win 29200, options [mss 1380,sackOK,TS val 495341
41 ecr 0,nop,wscale 7], length 0
21:36:29.406300 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:30.408295 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:31.405136 IP (tos 0x0, ttl 64, id 48316, offset 0, flags [DF], proto TCP (6), length 60)
10.10.126.*.60692 > Destination_server.ssh: Flags [S], cksum 0x3998 (correct), seq 379301407, win 29200, options [mss 1380,sackOK,TS val 495346 42 ecr 0,nop,wscale 7], length 0
21:36:35.412611 IP (tos 0x0, ttl 64, id 48317, offset 0, flags [DF], proto TCP (6), length 60)
10.10.126.*.60692 > Destination_server.ssh: Flags [S], cksum 0x35ae (correct), seq 379301407, win 29200, options [mss 1380,sackOK,TS val 495356 44 ecr 0,nop,wscale 7], length 0
21:36:35.412738 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:36.414276 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:37.416282 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:43.428318 IP (tos 0x0, ttl 64, id 48318, offset 0, flags [DF], proto TCP (6), length 60)
10.10.126.*.60692 > Destination_server.ssh: Flags [S], cksum 0x2dda (correct), seq 379301407, win 29200, options [mss 1380,sackOK,TS val 495376 48 ecr 0,nop,wscale 7], length 0
21:36:43.428457 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:44.430268 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
21:36:45.432280 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.10.126.* tell Destination_server, length 28
我可以使用第三台服务器到达目的地吗
理论上。
第三台服务器必须位于故障服务器所在的子网中。
基本上,如果“真实”子网是 /25 (255.255.255.128),而您的错误服务器 IP 是 10.10.127.10,那么您可以连接到 10.10.127.0 和 10.10.127.125 之间的任何人。这些地址将在您的故障服务器所在的同一网络中。
为什么
基本上有两种情况需要考虑。假设您的服务器有一个 IP、一个网络掩码和一个网关。省略 DNS 解析。简化,...
在子网内
如果您尝试访问网络中的某个主机,那么离开您系统的第一个数据包将是一个 ARP,使用“谁拥有我的 IP 地址”消息进行广播。
作为响应,您可能会收到一条“is-at 00:11:22:...”消息,并返回您的对等硬件地址。然后,消息将直接从您的主机发送到远程。
第一个用例仅适用于同一 LAN(或 VLAN)内的通信。
远程子网
通常,您会尝试访问一些远程服务。如果您的目标的 IP 地址不属于您的任何本地网络,那么您的源服务器会将其流量转发到其默认网关。
同样,我们可能会看到一些 ARP 解析试图解析您的网关硬件地址(虽然是您的默认网关,但它的硬件地址可能已经在您的 ARP 缓存中)。
从那里,要么我们的目标属于连接到我们的路由器的某个子网,然后我们回到了子网内的情况。否则,我们的路由器会将流量转发到其网关。
为什么157.2.3.5能进去
好吧,考虑到 157.2.3.5 不是 10/8 的一部分,那么它的连接将像往常一样通过您的网关。
使用 /8 而不是 /25 配置服务器后,您基本上破坏了该服务器与 /8 中包含的所有内容之间的通信,而不是 /25 的一部分。因为您的故障服务器错误地将这些网络假定为本地网络,因此尝试解析 ARP 并且不会得到任何答案。
只要您的遥控器属于 10.10.127.0/25 或 10/8 以外的任何地方,那么您就不会遇到连接问题。