企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## iptables命令、规则、参数详解 ## 表 (table) 包含4个表: 4个表的优先级由高到低:raw-->mangle-->nat-->filter * raw---RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip\_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了. * filter---这个规则表是预设规则表,拥有 INPUT、FORWARD 和 OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的理动作 * net----此规则表拥有prerouting和postrouting两个规则链, 主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT) * mangle--此规则表拥有prerouting、FORWARD、postrouting三个规则链,除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(ITL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤)这时就必须将这些工作定义在mangles规则表中 ## 常用命令 ``` 常用命令: -A 追加规则-->iptables -A INPUT -D 删除规则-->iptables -D INPUT 1(编号) -R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置) -I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位 -L 查看规则-->iptables -L INPUT 列出规则链中的所有规则 -N 新的规则-->iptables -N allowed 定义新的规则 ``` ## 通用参数 ``` 通用参数: -p 协议 例:iptables -A INPUT -p tcp -s源地址 例:iptables -A INPUT -s 192.168.1.1 -d目的地址 例:iptables -A INPUT -d 192.168.12.1 -sport源端口 例:iptables -A INPUT -p tcp --sport 22 -dport目的端口 例:iptables -A INPUT -p tcp --dport 22 -i指定入口网卡 例:iptables -A INPUT -i eth0 -o指定出口网卡 例:iptables -A FORWARD -o eth0 ``` ``` -j 指定要进行的处理动作 常用的ACTION: DROP:丢弃 REJECT:明示拒绝 ACCEPT:接受 SNAT基于原地址的转换 source--指定原地址 ``` 比如我们现在要将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址: iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外网有效ip) 这样,只要是来自本地网络的试图通过网卡访问网络的,都会被统统转换成172.16.100.1这个IP. MASQUERADE(动态伪装)--家用带宽获取的外网ip,就是用到了动态伪装 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE DNAT目标地址转换 destination-指定目标地址 iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2 10.18访问80端口转换到100.2上 MASQUERADE:源地址伪装 REDIRECT:重定向:主要用于实现端口重定向 MARK:打防火墙标记的 RETURN:返回 在自定义链执行完毕后使用返回,来返回原规则链。 构建iptable策略的最后一步实在linux内核中启用ip转发 ### forwarding echo "\[+\] Enabling Ip forwarding..." echo 1 > /proc/sys/net/ipv4/ip\_forward ## 测试用到的命令 hping nc