A 可以 ping B,B 可以 ping C,但是 A 不能 ping C。如何将 A 连接到 C(以太网)?

A 可以 ping B,B 可以 ping C,但是 A 不能 ping C。如何将 A 连接到 C(以太网)?
  • 我家里有一台电脑,ip为192.168.221.xxx

  • 我在工作时有另一台可以 ping 通的计算机,它有 2 个 IP 地址:192.168.1.1。1.xxx 和 192.168.0.xxx。最后 2 个地址具有相同的网关,即 192.168。1.1.

  • 办公室里的电脑连接到一个集线器。该集线器还连接了一个嵌入式设备,地址为 192.168。0.xxx

现在我无法从家用电脑 ping 通该嵌入式设备。如何在不更改其所连接的子网的情况下连接到它?我可以从工作电脑 ping 通嵌入式设备,也可以从家用电脑 ping 通工作电脑。因此,我尝试通过工作电脑从家用电脑连接到嵌入式设备。端口转发?如何在 Ubuntu 上建立端口转发?

答案1

一种简单的方法是使用 SSH 转发。运行以下命令:

ssh -L 8000:192.168.0.xxx:yyyy [email protected]

一旦您对工作机器进行身份验证,ssh 将在端口 8000 上本地监听。如果您连接到 localhost:8000,则连接将转发到 192.168.0.xxx:yyyy。

[编辑:回答以下问题]

您在主机 A 上。使用 -R 使 B 监听端口并转发到 C。这可能没问题,具体取决于您对 B 的访问权限有多大。使用 -L 使 A 监听端口,并通过 B 将连接隧道传输到 C。因此,假设 B 是 10.10.10.10 而 C 是 20.20.20.20,并且您想通过 ssh 连接到 C。您运行以下命令:

ssh -L 8000:20.20.20.20:22 [email protected]

现在 A 正在监听端口 8000,但与它的连接将通过隧道传输到 20.20.20.20:22,因此在本地 shell 中运行以下命令:

ssh [email protected]:8000

这将与 C 建立连接(通过您打开的会话到 B)。用其他服务替换其他端口,例如连接到 C 上的 Web 服务器:

ssh -L 8000:20.20.20.20:80 [email protected]

然后将浏览器指向http://127.0.0.1:8000

答案2

可能是嵌入式设备没有网关/路由到您的家用 PC 范围 192.168.221.xxx。如果您可以访问其配置,则只需在其路由表中添加适当的网关即可连接而无需转发。

答案3

这个问题有点模糊(也许是,早上第一件事)。

我会检查你的子网掩码,如果你在 255.255.255.0,那么 .221、.1 和 .0 机器就在完全独立的网络上。

至于工作和嵌入式机器,它们在同一个网络上,但如果它们无法通信,我猜测是路由冲突。

如果是我,我会禁用工作机器上的辅助接口,并确保将所有内容放在同一个网络(255.255.255.0)上,然后使用同一范围内的 IP(192.168.0.x)。

如果所有内容都在 255.255.0.0 子网上,那么它们已经在同一个网络上了,因此我只需禁用工作机器上的第二个接口,因为这可能会产生冲突。

答案4

将 B 设置为路由器。

如果B是Linux机器,执行以下命令:

echo 1 > /proc/sys/net/ipv4/ip_forward

除非 B 已经是 A 的默认网关,否则您现在可能需要配置 A 以了解网络 C,并告诉它使用 B 作为网关来到达 C。

route add -network 192.168.1.0 netmask 255.255.255.0 gw ip-of-B

相关内容