Linux下使用iptables进行本地端口转发


本机16688端口不开放,如何在Linux下使用iptables进行本地端口转发到已经开放的端口上,如下:

1、查看端口使用的情况

[root@bkjia ~]# 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@bkjia ~]# 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防火墙 

iptables使用范例详解

Linux防火墙iptables详细教程

iptables的备份、恢复及防火墙脚本的基本使用

Linux下防火墙iptables用法规则详解

Linux下iptables防火墙设置

本文永久更新链接地址

相关内容