10.15 iptables filter表案例 iptable nat应用

这个和-t filter 打印的信息是一样的。

关于清除规则的命令中,

[[email protected] ~]#  iptables -F
[[email protected] ~]# iptables -Z

不加-t默认是针对表filter来操作的,-F 表示把所有规则全部删除;-Z表示把包以及流量计数器置零。

B. 增加/删除一条规则

[[email protected] ~]# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP

这就是增加了一条规则,省略-t所以针对的是filter表。-A 表示增加一条规则,另外还有-I 表示插入一条规则,-D删除一条规则;后面的INPUT即链名称,还可以是OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); --sport/--dport 后跟源端口/目标端口;-d 后跟目的IP(主要针对内网或者外网);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。这样讲可能很乱。

[[email protected] ~]# iptables -I INPUT -s 1.1.1.1 -j DROP

上例表示:插入一条规则,把来自1.1.1.1的所有数据包丢掉。

[ro[email protected] ~]# iptables -D INPUT -s 1.1.1.1 -j DROP

上例表示把来自2.2.2.2 并且是tcp协议到本机的80端口的数据包丢掉。这里要说的是,--dport/--sport 必须要和-p选项一起使用,否则会出错。

[[email protected] ~]# iptables -I OUTPUT -p tcp --dport 22 -d 10.0.2.34 -j DROP

这条规则表示,把发送到10.0.2.34的22端口的数据包丢掉。

至于FORWORD链的应用阿铭几乎没有用到过,所以不再举例。再总结一下各个选项的作用:

-A/-D :增加删除一条规则;

-I :插入一条规则,其实跟-A的效果一样;

-p :指定协议,可以是tcp,udp或者icmp;

--dport :跟-p一起使用,指定目标端口;

--sport :跟-p一起使用,指定源端口;

-s :指定源IP(可以是一个ip段);

-d :指定目的IP(可以是一个ip段);

-j :后跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包;

-i :指定网卡(不常用,但有时候能用到);

[[email protected] ~]# iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
[[email protected] ~]# iptables -nvL |grep '192.168.1.0/24'
    0     0 ACCEPT     all  --  eth0   *       192.168.1.0/24       0.0.0.0/0

删除某一条规则使用如下命令:

[[email protected] ~]# iptables -D INPUT 1

-D 后跟链名,然后是规则num,这个num就是查看iptables规则时第一列的值。再次查看刚才的规则,已经没有了:

[[email protected] ~]# iptables -nvL --line-numbers

iptables还有一个选项经常用到,-P(大写)选项,表示预设策略。用法如下:

[[email protected] ~]# iptables -P INPUT DROP
-P后面跟链名,策略内容或者为DROP或者为ACCEPT,默认是ACCEPT。注意:如果你在连接远程服务器,千万不要随便敲这个命令,因为一旦你敲完回车你就会断掉。
这个策略一旦设定后,只能使用 iptables -P INPUT ACCEPT 才能恢复成原始状态,而不能使用-F参数。下面阿铭针对一个小需求讲述一下这个iptables规则如何设定。
需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.137.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式。脚本内容如下:
[[email protected] ~]# cat /usr/local/sbin/iptables.sh
#! /bin/bash

ipt="/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -s 192.168.137.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

完成脚本的编写后,直接运行 /bin/sh  /usr/local/sbin/iptables.sh 即可。如果想开机启动时初始化防火墙规则,则需要在 /etc/rc.d/rc.local 中添加一行 “/bin/sh /usr/local/sbin/iptables.sh”

[[email protected] ~]# sh /usr/local/sbin/iptables.sh
[[email protected] ~]# iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   20  1580 ACCEPT     tcp  --  *      *       192.168.137.0/24     0.0.0.0/0           tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21

运行脚本后,查看规则就是这样的,可以看到阿铭的第一条规则中已经有20个包(第一列)被放行过了。

关于icmp的包有一个比较常见的应用:

[[email protected] ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

--icmp-type 这个选项是要跟-p icmp 一起使用的,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。这个有必要记一下。


C. nat表的应用

其实,linux的iptables功能是十分强大的,阿铭曾经的一个老师这样形容linux的网络功能:只有想不到没有做不到!也就是说只要你能够想到的关于网络的应用,linux都能帮你实现。在日常生活中相信你接触过路由器吧,它的功能就是分享上网。本来一根网线过来(其实只有一个公网IP),通过路由器后,路由器分配了一个网段(私网IP),这样连接路由器的多台pc都能连接intnet而远端的设备认为你的IP就是那个连接路由器的公网IP。这个路由器的功能其实就是由linux的iptables实现的,而iptables又是通过nat表作用而实现的这个功能。

在这里举一个例子来说明iptables如何实现的这个功能。假设你的机器上有两块网卡eth0和eth1,其中eth0的IP为10.0.2.68 ,eth1的IP为192.168.1.1 。eth0连接了intnet 但eth1没有连接,现在有另一台机器(192.168.1.2)和eth1是互通的,那么如何设置也能够让连接eth1的这台机器能够连接intnet(即能和10.0.2.68互通)?

[[email protected] ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

就是这样简单的两条命令就能实现上面的需求。第一个命令涉及到了内核参数相关的配置文件,它的目的是为了打开路由转发功能,否则无法实现我们的应用。第二个命令则是iptables对nat表做了一个IP转发的操作,-o 选项后跟设备名,表示出口的网卡,MASQUERADE表示伪装的意思。

保存以及备份iptalbes规则

刚才在上面的内容中阿铭也提到了,咱们设定的防火墙规则只是保存在内存中,并没有保存到某一个文件中,也就说当系统重启后以前设定的规则就没有了,所以设定好规则后要先保存一下。

[[email protected] ~]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]

它会提示防火墙规则保存在了/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件了。所以日后,如果你遇到备份防火墙规则的任务,其实就是要拷贝一份这个文件的副本。

有时,我们会需要把防火墙所有规则都清除,使用 iptables -F 命令虽然可以,但是最好的办法是把防火墙服务停止:

[[email protected] ~]# service iptables stop
iptables:清除防火墙规则:                                 [确定]
iptables:将链设置为政策 ACCEPT:nat filter                [确定]
iptables:正在卸载模块:                                   [确定]

这样防火墙就失效了,但是一旦重新设定规则后(哪怕只有一条),防火墙服务会自动开启。下面阿铭介绍给你一个用来备份防火墙规则的命令:

[[email protected] ~]# sh /usr/local/sbin/iptables.sh
[[email protected] ~]# iptables-save > myipt.rule
[[email protected] ~]# cat myipt.rule
# Generated by iptables-save v1.4.7 on Sat Jun  1 18:14:03 2013
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [50:4528]
-A INPUT -s 192.168.137.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
COMMIT
# Completed on Sat Jun  1 18:14:03 2013

先执行一下刚才我们写的iptables脚本,使用 iptables-save 命令重定向到一个文件里。要想恢复这些规则使用下面的命令即可:

[[email protected] ~]# iptables-restore < myipt.rule

原文地址:http://blog.51cto.com/13107353/2144690

时间: 2024-10-09 11:38:20

10.15 iptables filter表案例 iptable nat应用的相关文章

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展 iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html iptables限制syn速率 http://www.aminglinux.com/bbs/thre

10.15 iptables filter表案例 10.16/10.17/10.18 iptable

七周四次课 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 打开端口转发, 调整内核参数 增加一条规则 所添加的规则 B机器设置默认网关 设置公共DNS C设备与A通信,通过端口转换的形式,将原有iptables清空 上面为进来的包进行转换,下面为出去的包进行转换 原文地址:http://blog.51cto.

10.15 iptables filter表小案例;10.16—10.18 iptables nat

扩展: 1. iptables应用在一个网段: http://www.aminglinux.com/bbs/thread-177-1-1.html 2. sant,dnat,masquerade: http://www.aminglinux.com/bbs/thread-7255-1-1.html 3. iptables限制syn速率: http://www.aminglinux.com/bbs/thread-985-1-1.html 10.15 iptables filter表小案例 ipta

10.15-10.18 iptables filter表案例 iptables nat表应用

七周四次课(3月22日) 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展1. iptables应用在一个网段  http://www.aminglinux.com/bbs/thread-177-1-1.html2. sant,dnat,masquerade   http://www.aminglinux.com/bbs/thread-7255-1-1.html3. iptables限制syn速率  http://www.

iptables filter表案例及iptables nat应用

iptables filter表案例 iptables小案例需求 只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.1.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 由于这个需求有多条规则,所以最好写成脚本的形式,操作示例如下: # vi /usr/local/sbin/iptables.sh              加入如下内容,保存退出. 脚本内容: ipt="/usr/sbin/iptables" $i

Linux学习笔记(三十二)iptables filter表案例、 iptables nat表应用

一.iptables filter表案例 需求:将80.20.21端口放行,对22端口指定特定的ip才放行 以下为操作方法: vim  /usr/local/sbin/iptables.sh    //加入如下内容 #! /bin/bashipt="/usr/sbin/iptables"   //定义一个变量,写iptables的绝对路径 $ipt -F                //清空规则 $ipt -P INPUT DROP        //添加默认的INPUT规则 $ip

iptables filter表案例、iptables nat表应用

iptables filter表案例 案例: 需求:把80端口22端口21端口放行,22端口指定一个IP段,只有这个IP段的ip访问的时候才可以访问到,其他段的都拒绝. 我们先编写一个shell脚本 vim /usr/local/sbin/iptables.sh 加入如下内容 #! /bin/bash ipt="/usr/sbin/iptables" $ipt -F $ipt -P INPUT DROP $ipt -P OUTPUT ACCEPT $ipt -P FORWARD ACC

七周四次课 iptables filter表案例以及iptables nat表应用

iptables小案例将80端口,22端口和21端口放行,22端口需要指定IP段,只有指定IP段访问才可以.其他段一概拒绝.我们可以用一个脚本来实现. #!/bin/bashipt="/usr/sbin/iptables"ipt是定义了一个变量,如果要执行命令,要写全局绝对路径,这样在脚本当中才不会因为环境变量问题导致命令无法执行.所以以后路写shell脚本时一定要写全局绝对路径.我们来定义一个变量,目的就是后面有许多的地方要加载它,如果写很长一段命令会很繁琐.所以我们要定义一个变量,

iptables filter表案例及iptables nat表应用

iptables小案例: 只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.1.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 由于这个需求有多条规则,所以最好写成脚本的形式,操作示例如下: vi /usr/local/sbin/iptables.sh 加入如下内容,保存退出. 脚本内容: ipt="/usr/sbin/iptables" $ipt -F $ipt -P INPUT DROP $ipt -P OU