This topic created in 1585 days ago, the information mentioned may be changed or developed.
我有个云服务器,我不希望别人直接访问 A 端口,直接连接 A 端口是不行的。我想通过访问 B 端口来进行转发到 A 端口。
下面是自己乱写的一些规则,没起到作用。。不知道怎么写。。感觉要买本书来看看了
iptables -I INPUT -p tcp --dport A -j DROP
iptables -I INPUT -s 127.0.0.1 -p tcp --dport A -j ACCEPT
iptables -t nat -A PREROUTING -d 0.0.0.0 -p tcp --dport B -j DNAT --to-dest 127.0.0.1:A
iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport A -j DNAT --to-dest 127.0.0.1
9 replies • 2022-02-06 23:51:49 +08:00
 |
|
1
jasonyang9 Jan 28, 2022
我现在基本都用 nftables 了,iptables 不太用。
思路: 服务程序是在监听端口 A 的; 对入站的 TCP 数据包,源是 127.0.0.1 的,目标端口是 A 的,接受; 对入站的 TCP 数据包,目标端口是 A 的,丢弃; 做 DNAT ,即端口转发,对目标 IP 是本机的,且对目标端口是 B 的,修改目标端口到 A 。
第 1 和 2 条的顺序是否倒了?
你没有修改数据包的源 IP ,即没有做 SNAT ,然后在`iptables -I INPUT -s 127.0.0.1 -p tcp --dport A -j ACCEPT`中又判断了仅从 127.0.0.1 发来的入站数据包接受。
|
 |
|
2
retanoj Jan 28, 2022
请 google:iptables 本地端口转发
|
 |
|
3
lovelylain Jan 28, 2022 via Android
要求不高的话,用 frp 吧,简单很多,缺点是代理中转了一次,丢失了原始客户端 ip 。
|
 |
|
4
liangzai Jan 28, 2022
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 13306 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 13306 -j DNAT --to-destination 192.168.10.209:3306 iptables -t nat -A POSTROUTING -d 192.168.0.209 -p tcp --dport 3306 -j SNAT --to-source 192.168.10.210 service iptables save service iptables restart
我自己做的 A 转发端口到 B 主机样例:内网 192.168.10.210 是有公网 IP 的 A 主机,将 13306 端口转发到内网主机 B 的 192.168.10.209 的 3306 端口上,即通过 A 主机的公网访问连接到内网 B 的 mysql 端口上 如果是本机转发应该就该改类似的端口,你可以自己试下
|