今天要做一个新的映射:将内网的一个8090口映射到外网的8087口。
在 /ETC/RC.LOCAL中最后插入:
iptables -t nat -A PREROUTING -d outIP -p tcp --dport 8087 -j DNAT --to innerIP:8090
保存:qw
service iptables restart
没有效果,最后问QQ群,建议:
1、查看内网服务器的端口8090有没有开放
2、查看外网路由的端口8087有没有开放
------------------------------------------------
1、内网服务器的防火墙关闭状态
后来给打开,仅开放了80和8090两个端口
2、路由服务器的端口怎么telnet也登录不上去。
又在/etc/rc.local中加入如下:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
结果如下:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t NAT -A PREROUTING -d outIP -p tcp --dport 8087 -j DNAT --to innerIP:8090
再保存,再重启服务没有用。真想哭 了。
度娘告诉我要这样:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 写入修改 /etc/init.d/iptables save 保存修改 service iptables restart 重启防火墙,修改生效
还是没有用。
后来我发现,这个路由规则都在/etc/sysconfig/iptables下面。
那好,我直接编辑这个文件,在最上面加上
-A REROUTIN -d outIP -p tcp --dport 8087 -j DNAT --to innerIP:8090
:wq
service iptables restart
再外网访问:一切OK了。
=========================================================
这件事终于搞定,也告一段落。
可是我的心里还有不少的疑问:
1、为什么放在/etc/rc.local里没有效果,或是仅仅是插入到最后不行而放在/etc/sysconfig/iptables
里面就可以呢?
我在想:是不是这个执行的顺序有先后,因我看了下 /etc/sysconfig/iptables里面有IPTABLES -F
那这样,如果rc.local先执行,那就没有什么用了??
2、同时也学到了服务器的端口可以用防火墙开控制的,平时只是完成任务把服务挂上就好了。
---------------------------
那么疑问1还需要我去验证学习,如果哪位朋友告之,这里不胜感激。