本机16688端口不开放,如何在Linux下使用iptables进行本地端口转发到已经开放的端口上,如下:
1、查看端口使用的情况
[root@linuxidc ~]# netstat -ntal
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 192.168.2.177:53 0.0.0.0:* LISTEN
tcp 0 0 192.168.2.35:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 192.168.2.35:22 192.168.2.165:49574 ESTABLISHED
tcp 0 0 :::8080 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
tcp 0 0 ::1:953 :::* LISTEN
2、启用 gate 转发
编辑 /etc/sysctl.conf,设置
net.ipv4.ip_forward = 1
执行:
# sysctl -p
3、例:添加*nat规则,连接服务器的1668端口,转发到22端口上
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -i eth0 -d 192.168.2.35 --dport 16688 -j DNAT --to 192.168.2.35:22
COMMIT
4、telnet 测试
5、以上只是使用了在外面的情况,但如果在服务器里边是使用不到43999端口的。
[root@linuxidc ~]# ssh 192.168.2.35 -p 16688
ssh: connect to host 192.168.2.35 port 16688: Connection refused
6、这里我们还可以在里边进行设置本地转发。
iptables -t -A OUTPUT -p tcp -d 192.168.2.35 --dport 16688 -j DNAT --to 127.0.0.1:22
7、再从本地进行测试,也是可以连接了,虽然端口是没有开启的。
ssh 192.168.2.35 -p 16688
The authenticity of host '[192.168.2.35]:16688 ([192.168.2.35]:16688)' can't be established.
RSA key fingerprint is 13:02:d6:d5:49:e7:05:ce:48:c8:56:d9:b8:b2:06:38.
Are you sure you want to continue connecting (yes/no)?
更多iptables相关教程见以下内容:
CentOS 7.0关闭默认防火墙启用iptables防火墙