针对端口转发的iptables设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daye704/article/details/80332145

场景:一个路由器上运行了监听着80端口的web。路由器有lan口,有wan口,lan口下设备允许访问该路由器的80端口。而wan口的设备有以下要求:

    1.禁止访问路由器80端口

    2.允许指定的ip地址(包含 ipv4 ipv6)访问8888端口来进入网页

针对这个需求,以下是我的解决思路:

    1.用iptables 禁止来自wan口的数据访问设备80端口;

    2.筛选ip,将符合条件的ip地址,且目标是8888端口的数据转发到80端口。

用到的技术分析:

    1.端口转发技术, DNAT

    2.ipv4 ip条件筛选

    3.ipv6 ip条件筛选

技术实现:

1.端口转发

    iptables -t nat -I PREROUTING -i br0 -p tcp --dport 8888 -j DNAT --to-destination 192.168.8.1:80

    参数含义:

        -t nat : 应用在nat表

        -I PREROUTING:应用在PREROUTING链

        -i br0:指从br0过来的数据

        -p tcp:tcp协议的数据

        -dport:8888 目标是访问8888端口

        -j DNAT:进行网络地址转换

        --to-destination 192.168.8.1:80:目标地址改为192.168.8.1:80

2.ipv4 ip 条件过滤

过滤有几种情况,一个是带掩码的过滤,一个是直接指示地址池的过滤

    2.1掩码过滤:

        iptables -t nat -I PREROUTING -i br0 --source 192.168.8.0/30 -p tcp --dport 8888 -j DNAT --to-destination 192.168.8.1:80

    2.2地址池的过滤:

        iptables -t nat -I PREROUTING -i br0 -m iprange --src-range 192.168.8.10-192.168.8.120 -p tcp --dport 8888 -j DNAT --to-destination 192.168.8.1:80

3.ipv6 ip条件过滤

ip6tables可以做到过滤,如禁止某个地址段访问某个端口:

    ip6tables -t filter -A INPUT -i wan1 -p tcp --source 2400:f000:c000:10::/60 --dport 80 -j DROP

        -i wan1: 指定从wan口上来的地址

        --source: 制定ipv6地址段

但ipv6的存在,能给地球上每一颗沙子都配上ip地址,因此nat转换实现很艰难,甚至是没有nat表,因此条件可做,nat不行。

看起来此方案行不同,要另寻方法。

展开阅读全文

没有更多推荐了,返回首页