针对端口转发的iptables设置

场景:一个路由器上运行了监听着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不行。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值