我有 3 台普通台式机 A、B 和 C,它们属于同一网络。我在 C 上有一个 Apache Web 服务器。我想测试一种场景,希望始终通过 B 将请求从 A 路由到 C。可以实现吗?B 不是指定的网关机器,它是我的普通台式机之一。我可以使用路由表来实现这一点吗?请提供建议。B 始终运行 Linux,A 和 C 可以是任何操作系统(目前我使用的是 Windows)。
提前致谢。
答案1
如果机器 A、B 和 C 在同一个网络上,则可以通过 A 和 C 上的一些主机特定路由轻松完成。通常,IP 转发在 Linux 下是禁用的,因此您必须启用它。
echo 1 > /proc/sys/net/ipv4/ip_forward
或者:
sysctl net.ipv4.ip_forward=1
如果主机 A 是 10.1.2.3/24,主机 B 是 10.1.2.4/24,主机 C 是 10.1.2.5/24,则需要按如下方式添加路由。主机 A:
ip 路由通过 10.1.2.4 添加 10.1.2.5/32
主持人C:
ip 路由通过 10.1.2.4 添加 10.1.2.3/32
等效路由应该可以在 Windows 下实现,但我手头没有现成的命令。
答案2
您是指设置代理/socks 隧道之类的操作吗?您可以使用 ssh 和 -D 开关创建从 A 端口到 B 的隧道。
例如,在 A 上运行以下命令,然后您应该能够将您的 Web 浏览器代理配置指向本地计算机(A)上的端口 8080,并且所有内容都将通过 B
ssh -D 8080 -N username@serverB
如果您希望它一直运行直到关闭计算机 A,您也可以使用 -f 开关,它会将该 ssh 命令发送到后台。
请注意,您需要在机器 B 上使用 ssh(您运行的是 Linux,因此没有问题),但您还需要在机器 A 上使用 ssh。您可以尝试 Cygwin,但在机器 A 上安装 putty 会更容易。(使用 putty 设置 socks 代理登录 - 这很容易,而且有很多教程)