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


9

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

两位主机都可以看到彼此正常(ssh,ping等在一个到另一个之间的工作)。但是,只有主机A可以访问我们的公司防火墙并访问Internet等;主机B不能。

问:在不涉及系统管理员的情况下,我如何才能通过主机A路由主机B上的所有(而不只是HTTP)网络通信流量?现在,我不知道是否需要为主机B使用NAT,和/或使主机A作为代理服务器,和/或使主机A作为路由器。

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

Answers:


16

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

更简单的方法:NAT

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

然后在A上输入以下内容来进行交通: 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转发或触摸路线。


在发出ip route add命令时,出现以下错误:Error: either "to" is duplicate, or "gw" is a garbage.
哈利

顺便说一句,DrGkill,如果您还可以提及其他方式,我将非常感激。并且,一些书/资源以实用的方式涵盖了这些概念。我不需要类似于Tannenbaum的理论,而我可以尝试学习的概念和实际的Linux命令会有所帮助。不知道,看似过时的[ faqs.org/docs/linux_network/index.html](Linux网络管理员指南)是否仍然有效,并且涵盖了您上面提供的方法。非常感谢,上帝保佑。
哈利

正确的语法是ip route add default viaroute add default gw
量子

错误编辑,加上代理方式添加。请享用。
DrGkill 2011年

1
谢谢量子!该命令已成功接受。但是,当我现在ping www.google.com出现From hostA (<ipaddrOfHostA>) icmp_seq=1 Destination Host Prohibited错误时,数据包丢失了100%。
哈利

1

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

service iptables stop

不确定主机A和主机B上是否都必须这样做,但是确实使我通过了“目标主机被禁止”消息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.