Har*_*rry 10 traffic routing linux-networking
我不是我们公司网络的系统管理员,但我有两个 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。请原谅我对路由/网络这个主题的无知。
DrG*_*ill 17
您有多种解决方案可以做到这一点:
更简单的方法: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
Run Code Online (Sandbox Code Playgroud)
其他解决方案:代理,
但是您需要设置所有组件才能使用代理:
在 B 上,使用以下命令打开到 A 的 SSH 连接:
ssh -D8000 -N -f user@IP_of_A
Run Code Online (Sandbox Code Playgroud)
这将在 B 上打开一个代理 sock 并通过 A 中继所有流量。例如,如果您使用网络浏览器,则需要在 127.0.0.1 上设置一个代理 sock v5,监听端口 8000。您不需要设置 ip转发或触摸路由。