我不是我们公司网络的系统管理员,但我有两个 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 上是否都需要这样做,但它确实让我传递了“目标主机禁止”消息