我有一个带有3个网络适配器的Linux机器,我要对其进行如下配置:
我要达到的目标:
我需要实现路由器还是网桥?我可以仅通过配置NetFitler / ip表来执行此操作,还是应该实现一些代码?如果是代码,我应该在哪一层与IP堆栈集成?
对于常规访问,您必须使用MASQUARADE / SNAT(取决于您在C上的IP地址是动态还是静态)。
假设当前情况是您的计算机A具有静态IP地址a.a.a.a
,而计算机B具有静态IP地址b.b.b.b
。两者都有到计算机C的默认网关。而且Someserver.com具有静态IP地址r.r.r.r
,秘密端口为pppp
。
您可以将计算机C配置为路由器,它将具有通往Internet接口C的默认路由(它已经通过静态配置或通过PPPoE等动态设置了)。本身就能实现1.
现在,您有两种可能性:
使计算机也成为路由器。然后,更改计算机B的配置,使其默认路由通过计算机A(而不是以前的计算机C),并按如下方式配置计算机A:
iptables -t nat -s b.b.b.b -d r.r.r.r -p tcp --dport pppp -j SNAT --to a.a.a.a
这将使从源IPb.b.b.b
到目的地IPr.r.r.r
和目标端口的所有TCP数据包都pppp
像它们来自哪里一样假装a.a.a.a
,从而完成3
,并且someserver.com的流量将返回到源地址(a.a.a.a
),该地址将由计算机解码阿并送回计算机乙。(因此完成4
)
这比较容易,但是要求您的计算机B运行的操作系统能够执行此类NAT策略。
将计算机A更改为具有私有IP 10.0.1.100/24
,将计算机B更改为具有私有IP 10.0.2.100/24
。然后在计算机C上执行以下操作:
ip addr add a.a.a.a/nn dev ifaceC
ip addr add b.b.b.b/nn dev ifaceC
iptables -t nat -s 10.0.1.100 -j SNAT --to a.a.a.a
iptables -t nat -s 10.0.2.100 -d r.r.r.r -p tcp --dport pppp -j SNAT --to a.a.a.a
iptables -t nat -s 10.0.2.100 -j SNAT --to b.b.b.b
nn
您的网络掩码在哪里,并且ifaceC
是接口C的名称。这将使计算机甲和B计算机在私人范围,因此允许计算机C到NAT计算机阿到a.a.a.a
(所以它的行为就像之前),并且NAT计算机乙要么a.a.a.a
(如果DST = r.r.r.r
,DPORT =pppp
条件被满足),或b.b.b.b
(否则)。
这不需要计算机A或计算机B上的任何特殊支持,但是会将它们放在NAT之后,这可能会影响其他一些因素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句