我正在尝试将来自 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 隧道。伪装规则允许数据包返回。