一个合作单位给我创建了十几台虚拟服务器做支撑。但是只给负载均衡绑定了公网IP。
由于这个支撑的服务需要测试和调优,经常要往服务器上传class或者修改数据库。
为了方便操作,我打算在负载均衡服务器上做端口映射,把不同的服务器映射在端口上。
这样团队成员只要链接唯一公网IP的不同端口就可以在对应的不同服务器上进行操作了。

首先选定的工具是iptables,也没有什么特别理由,就是因为以前用过类似的功能。

首先肯定是执行:echo 1 >/proc/sys/net/ipv4/ip_forward 开启linux的转发功能。

然后就在网上查,别人是怎么实现的。看到有朋友是这样写的:
iptables -t nat -A PREROUTING -d 【公网地址】 -p tcp -m tcp --dport 【公网端口】 -j DNAT --to-destination 【内网IP】:【内网端口】
我尝试了几次,没有实现转发功能,原因不明。类似的方式找了很多,都没有成功。
最后只好找合作单位的网管问问,网管兄弟听了我描述的情况后,一句话就说清楚了。
原来他们虚拟的服务器全都没有绑定公网IP的网卡,所有通过公网的访问全都是由防火墙映射到绑定内网IP的网卡上的。我不了解IDC搭建,所以在这个过程中耽误了很多时间。
这下就明白了,填写公网IP肯定在转发时无法识别。赶紧改一下,不再指定公网IP了。
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 【公网端口】 -j DNAT --to-destination 【内网IP】

这样执行后仍然没有实现映射。继续在网上查,直到看了这篇文章:http://blog.csdn.net/yu_xiang/article/details/9212543
原来要用数据包发起方的IP地址(就是发起连接用户的IP)当作SNAT来使用,这样目标【内网IP】服务器回包的时候,才会路由到数据包发起方的IP上。
所以要先执行: iptables -t nat -A POSTROUTING -j MASQUERADE 设置SNAT(其中使用MASQUERADE是因为在我的这个需求中数据包发起方的IP是不确定的)。
然后再执行: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 【公网端口】 -j DNAT --to-destination 【内网IP】 指定端口镜像策略。

本以为这样就ok了,试了一下没想到还是不能实现转发。继续查原因,
经过漫长的查找,终于发现原来iptables安装后,默认在INPUT表和FORWARD表中拒绝所有其他不符合配置文件中规则的数据包。
知道原因就好办了,打开/etc/sysconfig/iptables 在最下面果然有这么两句:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
赶紧把 -A FORWARD -j REJECT --reject-with icmp-host-prohibited 注释掉,然后重启iptables
再执行上面几项配置:

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8001 -j DNAT --to-destination 172.31.2.51:22
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8002 -j DNAT --to-destination 172.31.2.52:22
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8003 -j DNAT --to-destination 172.31.2.55:8161
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8004 -j DNAT --to-destination 172.31.2.56:8161
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8005 -j DNAT --to-destination 172.31.2.57:8161
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8006 -j DNAT --to-destination 172.31.2.58:22
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8007 -j DNAT --to-destination 172.31.2.53:22
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8008 -j DNAT --to-destination 172.31.2.59:1521
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8009 -j DNAT --to-destination 172.31.2.60:1521
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8010 -j DNAT --to-destination 172.31.2.61:22

大功告成。
如果想要把配置保存起来,可以执行 service iptables save 
这样就不会每次重启 iptables 的时候配置就失效了。
这个一定要注意啊,如果不保存,重启iptables之后配置就失效了,要重新进行配置。
昨天就吃了这个亏,生效后重新修改了配置文件,重启后所有配置都失效了。我还以为是iptables出了问题,结果浪费了很多时间。

【补充】如果直想在本机重定向一个端口,只要直想下面这个语句就可以了

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

最后再说两句题外话,工程师的知识面广一些,真的很有好处,如果我懂点IDC搭建的知识,就不会在前面浪费那么多时间了。
所以说,工程师的肚是杂货铺,这话一点错都没有。

Centos服务器的端口映射相关推荐

  1. 怎么在服务器上加端口映射,教你怎么开服务器(路由端口映射)

    <教你怎么开服务器(路由端口映射)>由会员分享,可在线阅读,更多相关<教你怎么开服务器(路由端口映射)(11页珍藏版)>请在人人文库网上搜索. 1.JOHN教你怎么开服务器(不 ...

  2. TP-LINK虚拟服务器(端口映射)设置指导

    服务器怎么对外开放?很多用户自己在内网有搭建类似web.FTP.Mail等服务器,但是却无法被外网的用户访问到.这是因为没有进行虚拟服务器(端口映射)设置,端口映射功能可以让内网的服务器映射到外网上, ...

  3. linux 打开端口1935,CentOS服务器开放端口

    拿到服务器之后接着之前的通信步骤进行,却发现怎么也连接不上.最后发现是因为服务器端的端口5000没有开放.下面记录一下开放端口的过程. 使用命令 netstat -anp 查看端口开放情况.如果显示命 ...

  4. 内部邮件服务器的端口映射问题

    双鱼星的4500+路由,全部由配置好以后,内部电脑可以上网了,要配置内部的192.168.30.240的邮件服务器,需要映射:21,110,443端口

  5. 【记录】初探FRP+云服务器实现端口映射(2020.7.27)

    写在前面 2020快点过去吧...早起一看朋友圈都沸沸扬扬的- 接着上回映射端口联机超级鸡马的方式.利用SakuraFrp可以很方便快捷的实现将本地端口开放给公网IP从而让小伙伴通过该端口和你一起就像 ...

  6. 内网服务器访问远程服务器的端口映射

    映射命令 # 命令格式 ssh -R <local port>:<remote host>:<remote port> <SSH hostname> 命 ...

  7. 华为nat配置实验:内网能够访问外网,内网服务器80端口映射出去

    一 需求分析 1.1 需求 公司A在北京,公司B在上海,本次实验仅仅模拟局域网内出口路由器的配置,公司A业务流量较大,并且预算有限.公司B模拟外网的一个小型局域网,要求公司B的主机能够访问公司A的we ...

  8. centos服务器80端口被占用怎么解决,CentOS下tomcat的80端口被占用的解决办法

    故障:网站无法访问 分析:netstat -an查看到大量的80端口进程僵死,重启tomcat.tomcat启动失败,网页依然无法打开. 停止tomcat进程shutdown.sh,停止tomcat后 ...

  9. 磊科路由虚拟服务器设置,Netcore磊科无线路由器端口映射设置教程

    Netcore磊科无线路由器端口映射的设置方法,端口映射(端口转发)在磊科系列的路由器上又叫做虚拟服务器,通过配置虚拟服务器,可以让内网中的服务器(如WEB.FTP等服务器)被互联网上的用户所访问:本 ...

最新文章

  1. 程序员出身,身价340亿!没有他,可能我们刷不了B站
  2. nginx增加php支持,Nginx启用php支持
  3. Winforn中使用代码动态生成控件
  4. python如何判断给定的日期是周几?
  5. 爬山法实现 八皇后问题 (Python 实现)
  6. rmlv出错处理一例
  7. FoundationDB 学习 - 事务流程
  8. LeetCode33. 搜索旋转排序数组(二分查找)
  9. Nginx+Tomcat部署Angular+javaweb项目(解决刷新404)
  10. 树莓派和机器人有啥关系(也有jetson tx2的知识主要)
  11. 标签打印软件如何设置单排标签纸尺寸
  12. w ndows10图标,Win10桌面图标没了怎么办?Win10桌面快捷方式消失了解决方法
  13. 【计算机视觉40例】案例14:指纹识别
  14. 颜色空间内容讲解与图像分割应用
  15. 使用MIC进行变量选择
  16. 计算机网络日志保存时间,在网络安全等级保护制度中,网络运营者应当保留网络日志不少于( )...
  17. 公司常用的Project管理工具
  18. Python语言实现龙女仆康娜酱字符飞出
  19. 画论68 郑绩《梦幻居画学简明》
  20. 2020-8-20 第一篇记录学习

热门文章

  1. 44.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
  2. 匿名者组织公布100个即将攻击的中国政府网站目标
  3. 中国蚁剑AntSword
  4. 海纳百川而来的一篇相当全面的Java NIO教程
  5. bzoj3155 Preprefix sum 线段树
  6. SuperMap(9D10i)系列软件离线试用许可过期后,新许可激活软件教程-windows环境
  7. 【Python 3】SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xcf in position 0
  8. 4412开发板/4412核心板一次性通过FCC和CE等国际EMC认证
  9. SVG的座标变换transform
  10. MySql 5.7数据迁移8.0问题