iptables的三表五链

iptables命令

Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。
netfilter/iptables过滤防火墙系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。
这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然netfilter/iptables包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。

安装:yum install iptables iptables-services

格式:iptables [-t table] command [match] [-j target/jump]
      iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
      iptables –[A|I 链] [-i|o 网络接口] [-p 协议] [-s 来源ip/网域] [-d 目标ip/网域] –j[ACCEPT|DROP]

###常用命令
    iptables -L INPUT	#列出INPUT规则链中的所有规则。
    iptables -I INPUT -p tcp --dport 8080 -j ACCEPT  # linux iptables开放端口命令
    iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666	#将本机的 7777 端口转发到 6666 端口。
    iptables -t nat -A OUTPUT -p tcp --dport 7777 -j REDIRECT --to-port 6666	#PREROUTING链修改的是从外部连接过来时的转发,如果本机连接到本机的转发,需要修改 OUTPUT链。
    iptables -t nat -nL --line	#查看当前iptables 的 nat 表的所有规则:(不用 -t 指定表名默认的是指 filter 表)
    iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100	#改写封包目的地IP为某特定 IP或IP范围
    iptables -t nat -D PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80	#删除当前80端口转发到8080端口的转发规则

###对iptables服务进行保存
    service iptables save  
#如果上述命令执行失败报出:The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
#解决方法:
    systemctl stop firewalld #关闭防火墙
    yum install iptables-services #安装或更新服务
    systemctl enable iptables #设置开机启动iptables
    systemctl start iptables #打开iptables
    service iptables save
###重启iptables服务:
    service iptables restart

  • iptables说明
规则表的先后顺序:raw→mangle→nat→filter
规则链的先后顺序:
    入站顺序:PREROUTING→INPUT
    出站顺序:OUTPUT→POSTROUTING
    转发顺序:PREROUTING→FORWARD→POSTROUTING 

###常用配置
1.开放网口与ip来源 
    iptables -A INPUT -i lo –j ACCEPT	#所有的来自 lo 这个网口的封包,都予以接受
    iptables -A INPUT -i eth0 -s 192.168.1.200 -j ACCEPT 	#目标来自 192.168.1.200 这个 IP 的封包都予以接受 
    #192.168.1.0/24 可接受,但 192.168.1.10 丢弃 
    iptalbes -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
    iptables -A INPUT -i eth0 -s 192.168.1.10 -j DROP 
2.规则记录 
    iptables -A INPUT -s 192.168.1.200 -j LOG #相关信息就会被写入到/var/log/messages当中,然后该封包会继续进行,后续的规则比对。LOG 这个动作仅在进行记录而已,并不会影响到这个封包的其它规则比对的。 
3.开放tcp、udp端口
    #开放samba端口(udp137,138;tcp139,445) 
    iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT 
4.iptables匹配ICMP端口和ICMP类型 
    iptables -A INPUT -p icmp -icmp-type 类型 -j ACCEPT #--icmp-type :后面必须要接 ICMP 的封包类型,也可以使用代号,例如 8 代表 echo request 的意思。(可自查询ICMP-type对应表) 
5.SNAT源地址转换(让多个内网用户通过一个外网地址上网,即共享上网)
    iptables -t nat -A POSTROUTING -s 192.168.10.10 -o eth1 -j SNAT --to-source 111.196.221.212 #eth1为外网网卡,111.196.221.212为外网地址
    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE 	#外网IP地址不稳定的情况即可使用MASQUERADE(动态伪装),能够自动的寻找外网地址并改为当前正确的外网IP地址 
6.DNAT目地地址转换(让外网用户访问局域网内不同的服务器)
    iptables -t nat -A PREROUTING -i eth1 -d 61.240.149.149 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.6:80 #192.168.10.6为内网其他机器,eth1为外网网卡,61.240.149.149为外网ip
  • iptables参数
参数作用
-P(–policy)设置默认策略:iptables -P INPUT (DROP
-F(–flush)清空规则链
-L(–list)查看规则链
-A(–append)在规则链的末尾加入新规则
-I(–insert) num在规则链的头部加入新规则
-D(–delete) num删除某一条规则
-R(–replace)替换规则列表中的某条规则
Z( --zero)将表中数据包计数器和流量计数器归零
-s匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d匹配目标地址
-i(–in-interface)网卡名称,匹配从这块网卡流入的数据
-o(–out-interface)网卡名称,匹配从这块网卡流出的数据
-p(—proto)匹配协议,如tcp,udp,icmp
–dport num匹配目标端口号
–sport num匹配来源端口号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值