我有一个目标服务器,当前我的网络掩码被错误配置为 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
答案1
我可以使用第三台服务器到达目的地吗
理论上。
第三台服务器必须位于有故障的服务器所在的子网中。
基本上,如果“真实”子网是 /25 (255.255.255.128),并且您的故障服务器 IP 是 10.10.127.10,那么您可以连接到 10.10.127.0 和 10.10.127.125 之间的任何人。这些地址将位于有故障的服务器所在的同一网络中。
为什么
基本上有两种情况需要考虑。假设您的服务器有 IP、网络掩码和网关。省略 DNS 解析。简化,...
子网内
如果您尝试访问网络中的某个主机,那么离开系统的第一个数据包将是 ARP,并广播“who-has my-ip-address”消息。
作为响应,您可能会收到一条“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 以外的任何地址,那么您就不会有连接问题。