iptables localhost 重定向只是回显

iptables localhost 重定向只是回显

我正在尝试将来自 Internet 的流量重定向到本地主机上的 SSH 隧道iptables,端口 2025。由于某种原因,重定向不起作用。

我用它连接到它telnet,由于某种原因它回显,但没有显示重定向到的 SMTP 服务器的横幅。如果我telnet在系统上打开此重定向,到端口 2025,我会立即收到来自 SMTP 服务器的问候语。

从外部世界连接并按随机键:

$ telnet infantile.xyz 25
Trying 94.156.189.160...
Connected to infantile.xyz.
Escape character is '^]'.
cfvghnjdfghdfgh

它回显随机键。

连接到重定向所在的系统,显示了我希望互联网上的外部人员如何工作......

# telnet localhost 2025
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 infantile.xyz ESMTP Postfix (Debian/GNU)

我的iptables配置如下:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 252M  124G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
 270K   16M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
  308 12340 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
 8988  612K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 ctstate NEW
2277K  462M UDP        udp  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
3204K  147M TCP        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02 ctstate NEW
2277K  462M REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2914K  130M REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1855 packets, 447K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain TCP (1 references)
 pkts bytes target     prot opt in     out     source               destination         
22104 1144K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
 4976  265K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
 2585  145K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
   95  4836 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:587

Chain UDP (1 references)
 pkts bytes target     prot opt in     out     source               destination

我创建的重定向规则集的 NAT 规则是:

Chain PREROUTING (policy ACCEPT 3813 packets, 465K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 2954  174K DNAT       tcp  --  *      *       0.0.0.0/0            94.156.189.0/24      tcp dpt:25 to:127.0.0.1:2025

Chain INPUT (policy ACCEPT 3 packets, 110 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6798 packets, 408K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 11177 packets, 583K bytes)
 pkts bytes target     prot opt in     out     source               destination    

奇怪的是,它接受连接和回显,但无论如何都不会响应另一端(后缀)的服务。

我最初iptables使用本指南进行配置:https://wiki.archlinux.org/index.php/simple_stateful_firewall

这是我尝试用来重定向的:

iptables -t nat -I PREROUTING -i eth0 -p tcp -d 94.156.189.160 --dport 25 -j DNAT --to-destination 127.0.0.1:2025

我启用了以下 sysctl 选项:

net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.route_localnet = 1

答案1

要通过此防火墙重定向端口,您需要链iptables中的一些规则TCP以及链策略的更改FORWARD

正向链应该处于接受状态:

# iptables -P FORWARD ACCEPT

您需要允许重定向的端口及其目标:

# iptables -A TCP -p tcp --dport 25 -j ACCEPT
# iptables -A TCP -p tcp --dport 2025 -j ACCEPT

这个 POSTROUTING 规则...

# iptables -t nat -A POSTROUTING -j MASQUERADE
# iptables -t nat -I PREROUTING -i eth0 -p tcp -d 94.156.189.160 --dport 25 -j DNAT --to-destination 127.0.0.1:2025

通过这些规则,iptables 现在将端口 25 上的传入数据包重定向到本地主机端口 2025 上的 SSH 隧道。伪装规则允许数据包返回。

相关内容