美文网首页
iptables nat 转发

iptables nat 转发

作者: 秋幻旎苏 | 来源:发表于2017-12-06 17:56 被阅读0次

    一.环境

    1.检查iptables支持的转发模块

    lsmod |grep nat

    image.png
    如果不存在可以通过命令modprobe xxx 加载

    2.打开服务器的IP转发功能

    echo 1 > /proc/sys/net/ipv4/ip_forward
    有些机器如果是DHCP PPPOE的话还要打开
    echo "1" >/proc/sys/net/ipv4/ip_dynaddr

    或者

    编辑/etc/sysctl.conf文件
    net.ipv4.ip_forward=1
    然后在命令行sysctl -p

    3.检查iptables规则

    image.png
    如果最后一条规则如上图所示,就要加多一台规则iptables -A INPUT -p tcp --dport $outerport -j ACCEPT
    并且filter表中的FORWARD链要支持转发。
    iptables -I FORWARD -j ACCEPT 或者iptables -A FORWARD -p tcp --dport $outerport -j ACCEPT

    二.本地端口转发

    #!/bin/bash 
    outerport=80
    #对外端口
    innerport=8080
    #内部端口
    
    iptables -t nat -A PREROUTING -p tcp --dport $outerport -j REDIRECT --to-ports $innerport
    iptables -t nat -A OUTPUT -d localhost -p tcp --dport $outerport -j REDIRECT --to-ports $innerport
    

    特别注意:本机访问外网的端口会转发到本地,导致访不到外网,如访问对外ip,实际上是访问到本地,建议不做80端口的转发或者指定目的 -d localhost,要在nat表的output链加上一条规则如上,否则本地不能访问outerport。

    三.内网端口转发

    #!/bin/bash 
    outerport=80
    #对外端口
    outerip=121.13.65.3
    #对外ip(可访问)
    $innerport=8080
    #内部端口
    innerip=192.168.1.2
    #内网ip
    
    iptables -t nat -A PREROUTING -p tcp --dport $outerport  -j DNAT --to-destination $innerip:$innerport
    iptables -t nat -A POSTROUTING -d $innerip -p tcp --dport $innerport -j SNAT --to $outerip
    iptables -t nat -A OUTPUT -d $outerip -p tcp --dport $outerport -j DNAT --to $innerip:$innerport
    
    

    相关文章

      网友评论

          本文标题:iptables nat 转发

          本文链接:https://www.haomeiwen.com/subject/xfrlixtx.html