我正在尝试第一次路由并遇到“网络无法访问”消息。
我的目标是成功地从一台机器(子网 10.56.34.0) ping 通完全不同的网络(10.1.201.0)上的一台机器,即使我的 10.56.34.0 子网的网关无法到达那里。
这是我所拥有的。
- 一家企业创建了3个子网(不知道为什么):10.56.33.0 / 10.56.34.0 /10.56.35.0。
- 我在 10.56.34.0 子网上有一个 Linux 机,其默认网关是 10.56.34.1。
- 同一 Linux 机器可以 ping 通 10.56.35.0 子网(位于 10.56.35.253)上的网关
- 10.56.35.0 子网上的 Windows 计算机可以通过 10.56.35.253 网关成功 ping 通 10.1.201.157 上的服务器(我运行了 tracert)。
在我最初的笨拙尝试中,我尝试使用 10.53.35.253 网关直接从 10.56.34.209 Linux 机器设置到 10.1.201.0 网络的路由。那时我第一次遇到了“网络无法访问”消息。在此期间,我发现您无法使用另一个子网上的网关。(.34 子网无法使用 .35 网关)。我尝试使用 10.56.35.253 网关添加默认网关,并收到相同的“网络无法访问”消息。
好的。那么我该如何让 .34 子网上的 Linux 计算机通过 10.56.35.253 网关发送特定流量(到 10.1.201.0 子网的流量)呢?
答案1
假设您的子网掩码是 255.255.255.0,您不需要做任何事情。您的默认网关 (10.56.34.1) 应该知道将数据包转发到目标主机的方式。当您将 10.56.35.253 设置为网关时,您会得到无法访问的信息,因为您的机器未连接到 10.56.35.0 网络,因此您的 tcp/ip 堆栈无法通过第 2 层通信到达网关。
也许有某种防火墙/访问列表阻止您的机器到达目的地?
将默认网关保留为 10.56.34.1,尝试在不同的窗口上 ping 10.1.201.157 tcpdump -n icmp
。您是否收到 icmp 网络无法访问或类似 icmp 3/13 管理员禁止过滤器的消息?如果您尝试跟踪路由到目的地,您会得到什么结果?
答案2
是的,您可以这样做,但这取决于您的操作系统。
在 Windows 上,这是最成问题的。
Windows Server 2012 R2 和 Windows 8.1 具有 powershell cmdlet 来启用子网外的直接访问,“Get-NetOffloadGlobalSetting”显示当前状态,“Set-NetOffloadGlobalSetting -NetworkDirectAcrossIPSubnets”允许您配置该值。
虽然 PowerShell 可以理解客户端操作系统上“NetworkDirectAcrossIPSubnets”的语法,但此功能仅适用于服务器,在客户端操作系统下设置它将出现错误。
如果您的服务器中有 Windows 虚拟机,需要访问其自身子网之外的网关,并且您无法使用 NetworkDirectAcrossIPSubnets - 您可以安装另一个在类 Unix 操作系统下运行路由器的虚拟机,例如 pfSense - 它可以拥有子网外的多个地址,只要至少一个地址与网关位于同一子网中,并且它可以为您的 Windows 虚拟机进行 1:1 NAT。
答案3
这与所使用的子网掩码有关。
您知道,它通常是 255.255.255.0。将其更改为 255.255.255.192。您的机器现在会认为所有三个 IP 范围都是单个子网的一部分,而不是 3 个子网。然后您应该能够选择适合您所插入的任何设备的网关。
您可能还需要检查路由器的 VLAN。您可能没有插入正确的端口。