zoukankan      html  css  js  c++  java
  • CentOS 端口映射

    一个合作单位给我创建了十几台虚拟服务器做支撑。但是只给负载均衡绑定了公网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

    转自-------------https://blog.csdn.net/ziele_008/article/details/52062237

  • 相关阅读:
    project3 blockchain
    RESTful Web服务与“大”Web服务: 做出正确的建筑决策
    project2
    LAB4
    云计算的描述性文献综述与分类研究
    SQL常见面试题(学生表_课程表_成绩表_教师表)
    等价类划分经典实例-三角形测试用例设计
    搜索框功能测试分析
    B/S结构-登录页面-测试用例设计
    软件测试面试--常用基本控件测试用例
  • 原文地址:https://www.cnblogs.com/tudachui/p/9632841.html
Copyright © 2011-2022 走看看