NAME
iptables — administration tool for IPv4 packet filtering and NAT SYNOPSIS
iptables -ADC 指定链的规则 [-A 添加 -D 删除 -C 修改] 
iptables - RI 
iptables -D chain rule num[option] 
iptables -LFZ 链名 [选项] 
iptables -[NX] 指定链 
iptables -P chain target[options] 
iptables -E old-chain-name new-chain-name

参数

-A -append
    在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换 为多于一个(多个)地址时,这条规则会加到所有可能的地址(组合)后面。
 -D -delete
    从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则 指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
 -R -replace
    从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地 址,该命令会失败。规则序号从1开始。
 -I -insert
    根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1, 规则会被插入链的头部。这也是不指定规则序号时的默认方式。
 -L -list
    显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起 使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。
 -F -flush
    清空所选链。这等于把所有规则一个个的删除。
 -Z -zero
    把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。
 -N -new-chain
    根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。
 -X -delete-chain
    删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删 除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非 内建的链。
 -P -policy
    设置链的默认目标规则。
 -E -rename-chain
    根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。 TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用 户自定义链都不能是规则的目标。

iptables 的四表五链

filter: 负责过滤功能,包含了内建的链 INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。
   nat: 用于nat功能(端口映射, 地址映射等),由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING (修改准备出去的包)。
   mangle: 用于对特定数据包的修改。
   raw: 优先级最高, 设置raw时一般是为了不再让iptables做数据包的链接跟踪处理, 提高性能。

默认表是filter表,表的处理优先级: raw > mangle > nat > filter.

5个链为: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING.

PREROUTING: 数据包进入路由表之前。
       INPUT: 通过路由表后目的地为本机。
       FORWARDING: 通过路由表后, 目的地不为本机。
       OUTPUT: 由本机产生, 向外转发。
       POSTROUTIONG: 发送到网卡接口之前。

关于4表5链的对应关系图:

数据包的完整流向:

常见设置参数:

--dport 指定目标TCP/IP端口 如 –dport 80
  --sport 指定源TCP/IP端口 如 –sport 80
  -p tcp 指定协议为tcp
  -p icmp 指定协议为ICMP
  -p udp 指定协议为UDP
  -j DROP 拒绝
  -j ACCEPT 允许
  -j REJECT 拒绝并向发出消息的计算机发一个消息
  -j LOG 在/var/log/messages中登记分组匹配的记录
  -m mac –-mac 绑定MAC地址
  -m limit –-limit 1/s 1/m 设置时间策列
  -s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
  -d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段
  -s ! 10.10.0.0 指定源地址以外的

示例:

//开放ssh端口防火墙
   iptables -A INPUT -p tcp --dport 22 -j ACCEPT
   iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
   注:如果在预设设置把OUTPUT设置成DROP策略的话,就需要设置OUTPUT规则,否则无法进行SSH连接。

//关闭web服务端口
   iptables -A INPUT -p tcp --dport 80 -j drop
   iptables -A INPUT -p tcp -m multiport --dports 80,443 -j drop //配置多个端口

//流量限制
   iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT   //--limit 100/minute 表示将传入连接限制为100个每分钟,--limit -burst 200 表示仅当连接总数达到200个以后才开始限制连接数。

//记录丢弃的网络包
   iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:" //记录eth0接口所丢弃的网络包
   //限制每个IP的并发连接数
   iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT //允许每个客户端同时建立最多3个连接

//开启icmp服务
   iptables -A INPUT -p icmp -j ACCEPT

//只允许某台或某个ip段主机进行连接
   iptables -A INPUT -s 192.168.0.1 -p tcp --dport 22 -j ACCEPT //允许ip为192.168.0.1的主机进行连接
   iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT //允许ip段为192.168.0.0的主机进行连接

配置路由转发
   //改变目的地址
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dst 1.1.1.1 --dport 80 -j DNAT --to-destination 2.2.2.2:80 //把所有通过eth0这个网卡发往地址1.1.1.1的包都转发到 局域网的中2.2.2.2这台机器上
  iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m string --string "baidu.com" --algo bm -j DNAT --to-destination 1.1.1.1:80 //将匹配到baidu.com    的请求转到局域网的1.1.1.1这台机器上
  //改变源地址
  iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to-source 192.168.1.10 //将来源于192.168.10.0/24网段内的请求转发到192.168.1.10主机上

//保存iptables规则
  iptables-save > ~/iptables.rules
  //恢复iptables规则
  iptables-restore < ~/iptables.rules

iptables 命令的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. 【简单学习shell】iptables命令实用

    构造设备离线iptables命令iptables -I INPUT -p all -s 10.71.115.159 -j DROP 断链iptables -I INPUT -p all -s 10.7 ...

  3. iptables命令 高级网络

    http://man.linuxde.net/iptables iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. ...

  4. iptables命令使用详解

    iptables的主要功能是实现对网络数据包进出设备及转发的控制.当数据包需要进入设备.从设备中流出或者经该设备转发.路由时,都可以使用iptables进行控制. 环境 操作系统:CentOS7.3 ...

  5. iptables命令提取总结,包含扩展模块<取自朱双印博客>

    以下内容只是一些命令相关的,以朱双印博客中的iptables的教程提取出来的.纯粹只是命令的总结,如果需要看理论的知识,建议去看朱老师的博客,目前还没有看到写得比这个好的了. <http://w ...

  6. Linux iptables 命令

    iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具.iptables 工具运行在用户态,主要是设置各种规则.而 netfilter 则运行在内核态,执行 ...

  7. iptables命令

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. 语法 iptables(选项)(参数) 选项 -t<表&g ...

  8. iptables命令、规则、参数详解

    表    (table)包含4个表:4个表的优先级由高到低:raw-->mangle-->nat-->filterraw---RAW表只使用在PREROUTING链和OUTPUT链上 ...

  9. iptables命令(备忘)

    语法 iptables(选项)(参数) 选项 -t<表>:指定要操纵的表: -A:向规则链中添加条目: -D:从规则链中删除条目: -i:向规则链中插入条目: -R:替换规则链中的条目: ...

  10. Linux iptables命令详解

    iptables命令主要是设置防火墙信息的 常见命令参数 Usage: iptables -[AD] chain rule-specification [options] iptables -I ch ...

随机推荐

  1. HDU 6058 - Kanade's sum | 2017 Multi-University Training Contest 3

    /* HDU 6058 - Kanade's sum [ 思维,链表 ] | 2017 Multi-University Training Contest 3 题意: 给出排列 a[N],求所有区间的 ...

  2. PHP mysqli_field_count() 函数

    定义和用法 mysqli_field_count() 函数返回最近查询的列数. 假设我们有一个 "websites" 表,其中有 5 个字段 20 行记录.返回最近查询的列数: & ...

  3. ege图形库之简单贪吃蛇(c++)

    第二次做动画显示效果的小程序,心血来潮想做下儿时的经典游戏----贪吃蛇.由于时间有限,只是简单地做了基本功能,有时间后再完善更多功能. 由于个人水平有限,可能代码有些地方可以改进.不足之处敬请指出. ...

  4. Cogs 1688. [ZJOI2008]树的统计Count(树链剖分+线段树||LCT)

    [ZJOI2008]树的统计Count ★★★ 输入文件:bzoj_1036.in 输出文件:bzoj_1036.out 简单对比 时间限制:5 s 内存限制:162 MB [题目描述] 一棵树上有n ...

  5. SCOI2014 bzoj3594 方伯伯的玉米田(二维树状数组+dp)

    3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1971  Solved: 961[Submit][St ...

  6. 早停!? earlystopping for keras

    为了获得性能良好的神经网络,网络定型过程中需要进行许多关于所用设置(超参数)的决策.超参数之一是定型周期(epoch)的数量:亦即应当完整遍历数据集多少次(一次为一个epoch)?如果epoch数量太 ...

  7. html页面之间相互传值

    常见的在页面登录过后会获得一个token值然后页面跳转时传给下一个页面 sessionStorage.setItem("token",result.token);//传输token ...

  8. HDU 5705 Clock(2016杭电女生专场1004)——角度追及问题

    题意是给出一个当前的时间和角度a,问从现在开始的下一个时针和分针形成角度a的时间是多少,时间向下取整. 分析:时针3600s走30°,故120s走1°,分针3600s走360°,故10s走1°,那么每 ...

  9. UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)

    这两个题的模型是有n个人,有若干的关系表示谁是谁的父亲,让他们进行排队,且父亲必须排在儿子前面(不一定相邻).求排列数. 我们假设s[i]是i这个节点,他们一家子的总个数(或者换句话说,等于他的子孙数 ...

  10. 使用策略模式减少if else

    首先要明确的说出策略模式会不可避免导致你的代码类变得很多,如果对应方法逻辑很复杂时可采用,如果逻辑不是很复杂就有点大材小用了. package com.zihexin.application.stra ...