如何通过另一台主机路由一台主机的网络流量?

如何通过另一台主机路由一台主机的网络流量?

我不是我们公司网络的系统管理员,但我有两个 Linux 工作站(主机 A 和 B),并且对两者都具有 root 访问权限。

两台主机可以正常看到对方(一台主机可以使用 ssh、ping 等与另一台主机通信)。但是,只有主机 A 可以突破公司防火墙并访问互联网等;主机 B 则不能。

问题:如何才能让主机 B 上的所有(而不仅仅是 HTTP)传出和传入网络流量通过主机 A 路由,而无需系统管理员的参与?现在,我不知道是否需要对主机 B 使用 NAT,和/或将主机 A 设为代理服务器,和/或将主机 A 设为路由器。

在主机 B 上,我尝试发出一个route add -host <HostA> gw <HostA's Gateway>命令,但是没有起作用:我无法ping从主机 B 访问 www.google.com。请原谅我对路由/网络这个主题的无知。

答案1

您有多种解决方案可以做到这一点:

更简单的方法:NAT

通过允许转发使 A 成为路由器:sysctl net.ipv4.ip_forward=1 放入 net.ipv4.ip_forward=1/etc/sysctl.conf 以使其永久生效。

然后在 A 上输入以下内容进行 nat trafic:iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE

最后在 B 上:通过 A 路由所有流量:

ip route del default  
ip route add default via IP_of_A

其他解决方案:Proxify

但您需要设置所有组件才能使用代理:

在 B 上,使用以下命令打开与 A 的 SSH 连接:

ssh -D8000 -N -f user@IP_of_A 

这将在 B 上打开代理套接字并通过 A 中继所有流量。例如,如果您使用 Web 浏览器,则需要在 127.0.0.1 上设置代理套接字 v5 并监听端口 8000。您无需设置 IP 转发或接触路由。

答案2

我相信您需要禁用防火墙。

service iptables stop

不确定主机 A 和主机 B 上是否都需要这样做,但它确实让我传递了“目标主机禁止”消息

相关内容