• openwrt 端口回流的关键


    操作:设置此iptable

    iptables -I zone_lan_forward -t filter -m conntrack --ctstate DNAT -j ACCEPT

    原因说来话长:

    首先需要这个基础:

    http://my.oschina.net/HankCN/blog/117796

    上面的基础会之后,这里说一下原因:

    其实端口回流是soho 路由器的说法,实质起作用的还是SNAT,DNAT:

    我们在openwrt上设置完端口映射后,可以用iptables看一下NAT表的情况:

    root@DreamBox:~# iptables -t nat -L

    ……
    Chain nat_reflection_in (1 references)
    target prot opt source destination
    DNAT tcp -- 192.168.4.0/24 192.168.1.106 tcp dpt:www to:192.168.4.234:80  

    ——内网4.0/24网段访问wan口ip192.168.1.106的80端口,目的ip会DNAT为内网ip 192.168.4.234

    Chain nat_reflection_out (1 references)
    target prot opt source destination
    SNAT tcp -- 192.168.4.0/24 cj-PC.lan tcp dpt:www to:192.168.4.1

    ——4.0/24网段访问内网的 192.168.4.234(即cj-PC.lan)的80端口时,源IP转换为路由器的内网网关地址192.168.4.1

    我们发现规则都是好的,为什么就不能访问呢?

    那么,原因肯定是被filter表拦截了,而且可以确定是在forward环节

    在forward环节,默认的filter policy是DROP,

    所以我们必须为DNAT放行,就是文首的那个命令:

    iptables -I zone_lan_forward -t filter -m conntrack --ctstate DNAT -j ACCEPT

    为什么SNAT就不用管呢?因为SNAT是在forward环节后的postrouting节点做的事情,所以forward不用管SNAT。

  • 相关阅读:
    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
    MySQL<添加、更新与删除数据>
    MySQL<数据库和表的基本操作>
    MySQL<数据库入门>
    MySql阶段案例
    Mysql综合案例
    Mysql课后思考题
    Java课后思考题
    Java课后简答题
    超全面的JavaWeb笔记day23<AJAX>
  • 原文地址:https://www.cnblogs.com/souroot/p/4771162.html
Copyright © 2020-2023  润新知