zoukankan      html  css  js  c++  java
  • iptables 端口转发

    首先要开启端口转发器必须先修改内核运行参数ip_forward,打开转发:

    # echo 1 > /proc/sys/net/ipv4/ip_forward   //此方法临时生效
    或
    # vi /ect/sysctl.conf                      //此方法永久生效
    # sysctl -p 
    

    本机端口转发

    # iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
    

    根据 iptables防火墙原理详解 可知,实际上在数据包进入INPUT链之前,修改了目标地址(端口),于是不难理解在开放端口时需要设置的是放行8080端口,无需考虑80:

    # iptables -A INPUT -s 172.29.88.0/24 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
    

    此时外部访问http的80端口便可自动转到8080(浏览器地址栏不会变),而且又具有很高的性能,但如果你通过服务器本地主机的curl或firfox浏览器访问http://localhost:80http://doman.com:80都是不行(假如你有这样的奇葩需求),这是因为本地数据包产生的目标地址不对,你需要额外添加这条 OUTPUT 规则:

    iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080
    

    下面的规则可以达到同样的效果:

    iptables -t nat -A PREROUTING -p tcp -i eth0 -d $YOUR_HOST_IP --dport 80 -j DNAT --to $YOUR_HOST_IP:8080
    iptables -t nat -A OUTPUT -p tcp -d $YOUR_HOST_IP --dport 80 -j DNAT --to 127.0.0.1:8080
    iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1      --dport 80 -j DNAT --to 127.0.0.1:8080
    

    异机端口转发
    有些情况下企业内部网络隔离比较严格,但有一个跨网段访问的情况,此时只要转发用的中转服务器能够与另外的两个IP(服务器或PC)通讯就可以使用iptables实现转发。(端口转发的还有其他方法,请参考 linux服务器下各种端口转发技巧 )

    要实现的是所有访问 192.168.10.100:8000 的请求,转发到 172.29.88.56:80 上,在 192.168.10.100 是哪个添加规则:

    iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.10.100 --dport 8000 -j DNAT --to-destination 172.29.88.56:80
    iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.10.100
    或者
    iptables -t nat -A PREROUTING -d 192.168.10.100 -p tcp --dport 8000 -j DNAT --to 172.29.88.56:80
    iptables -t nat -A POSTROUTING -d 172.29.88.56 -p tcp --dport 80 -j SNAT --to-source 192.168.10.100
    

    需要注意的是,如果你的FORWARD链默认为DROP,上面所有端口转发都必须建立在FORWARD链允许通行的情况下:

     
    iptables -A FORWARD -d 172.29.88.56 -p tcp --dport 80 -j ACCEPT
    iptables -A FORWARD -s 172.29.88.56 -p tcp -j ACCEPT
  • 相关阅读:
    什么是桌面虚拟化,实施桌面虚拟化有什么好处?[转]
    运维工程师的职责和前景
    informix 中chunk/dbspace概念
    让用户体验决定桌面虚拟化成败
    专访运维与人才外包专家黄琨:运维工作最大的挑战是什么?
    PD与DBMS中的数据类型
    informix长事务的处理方式
    Oracle expdp/impdp导出导入命令及数据库备份(转)
    wpf的treeview显示item时候不能stretch的一个解决办法
    Jenkins 用户权限管理
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11183354.html
Copyright © 2011-2022 走看看