iptables转发问题

iptables转发问题

我有一个linux,有2个接口,例如eth0和eth1,一个是“外部”,另一个是“内部”,我想将一个端口从外部接口重定向到内部接口,但我对包的返回有一些问题。但是,如果我将其从外部转发到外部就没有问题了。在外部到外部工作并执行此操作的 iptables 代码是:

iptables -t nat -A PREROUTING -p tcp --dport (port number) -j DNAT --to-destination (ipdestiny internal):(port destiny who are listening in the host in this case is the same of dport)
iptables -t nat -A POSTROUTING -p tcp -d (ipdestiny internal) --dport (port number) -j SNAT --to-source (ip external)

如果我在“内部 eth”中执行了 tcpdump: TCPdump:

09:53:55.099904 IP (tos 0x8, ttl 127, id 21212, offset 0, flags [DF], proto TCP (6), length 52)
    ipexternal.(61236 port origin) > ipinternal.(port destiny): Flags [S], cksum 0x1aba (correct), seq 3030159247, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
        0x0000:  4508 0034 52dc 4000 7f06 832b 0ac8 2840  E..4R.@....+..(@
        0x0010:  c0a8 3204 ef34 0050 b49c 8f8f 0000 0000  ..2..4.P........
        0x0020:  8002 faf0 1aba 0000 0204 05b4 0103 0308  ................
        0x0030:  0101 0402

正如我所看到的,内部转发的流量有效,但没有任何内容从内部“返回”到外部。我检查了 /etc/sysctl.conf 该行:

net.ipv4.ip_forward=1

而且它没有注释。

这是我查看 nat 表的方式:

iptables -t nat -L -n

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:(port number listening on "external") to:(destiny ip "internal"):(port destiny in the "internal")

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       tcp  --  0.0.0.0/0            (ip destiny)       tcp dpt:(port number listening on "external") to:(ip "external")


Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

答案1

客户端可能正在接收流量,但不知道将返回流量发送到哪里。在客户端计算机上,定义静态路由或默认网关。

相关内容