Ubuntu iptables 简单学习

这里学习下iptables,用的是树莓派,树莓派用的系统Raspbian是基于Debian的,Ubuntu也源自Debian,而Ubuntu更多人知道,所以标题写的是Ubuntu。

简单来说,iptables是用来设置、维护和检查Linux内核的IP包过滤规则的,更多的解释反而让人迷惑,看实际使用来学习,参考:

https://www.cnblogs.com/jiu0821/p/5982070.html

最简单的一条命令:

sudo iptables -L

如下:

这里查看当前iptables规则,有3个常用的默认链,也就是Chain,分别为INPUT/FORWARD/OUTPUT,每个链的缺省策略为接受,即ACCEPT。

接着用下面的命令查看规则编号:

sudo iptables -L --line-numbers

如下:

这里num下面就是该规则的编号,如果没有添加过规则,可能就是空的输出,这里之所以有一条是因为我为了测试,添加了一条,如下:

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

这里-A参数意思是append,也就是将新规则追加到指定链的尾部,后面的INPUT就是指定的链。

-p参数意思是protocol,比如上面就指定为tcp协议。

--dport则是目的端口,3306是典型的mysql端口。

-j指定动作,这里是ACCEPT,除此之外还有DROP/REJECT/REDIRECT等。

iptables规则会立即生效,但是重启后则会丢失,因此需要设置iptables-persistent

sudo apt install iptables-persistent
sudo netfilter-persistent save

iptables-save这个命令我没用过,好像可以存储规则到文件,然后重启的时候恢复,不过系统有区别,直接用了iptables-persistent挺好用。

接着就是如何删除一条规则,如:

sudo iptables -L --line-number

得到输出为:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

删除第一条规则,命令为:

sudo iptables -D INPUT 1

这里-D参数意思是删除,后面跟的是链的名字,这里链为INPUT,链后面是该链下的规则序号,这里是1。

后面要学习一些别的较高级的内容,比如-t参数指定规则表。前面的命令没有加这个参数,则视为filter规则表。内建的规则表有三个,分别为nat/mangle/filter。这部分参考:

https://www.jianshu.com/p/58148d2d8416

nat规则表有prerouting和postrouting两个链,主要进行一对一、一对多和多对多等网址转译工作,如SNAT和DNAT。

filter规则表是预设规则表,有INPUT/FORWARD/OUTPUT三个规则链,用来进行封包过滤,如DROP/ACCEPT/REJECT等,基本规则建立在此。

既然说到了表,那么前面罗列规则的时候实际上是限于某个表的,所以如果查看别的,如我的nat表,命令如下:

sudo iptables -L -t nat --line-number

输出为:

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    DNAT       tcp  --  anywhere             anywhere             tcp dpt:50001 to:149.8.28.5
2    DNAT       tcp  --  anywhere             anywhere             tcp dpt:50001 to:149.8.28.5

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    MASQUERADE  tcp  --  anywhere             anywhere             tcp dpt:50001
2    MASQUERADE  tcp  --  anywhere             anywhere             tcp dpt:50001

这里是我做端口转发的时候添加的规则,具体可以参考我的博客:

https://blog.csdn.net/u012911347/article/details/87805783

那么参考前面删除规则的命令,这里添加-t参数来删除该表中的规则:

sudo iptables -t nat -D PREROUTING 1
sudo iptables -t nat -D POSTROUTING 1

这样前面重复的规则就处理掉了,通过下面的命令查看端口转发情况:

sudo iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 77 packets, 4658 bytes)
 pkts bytes target     prot opt in     out     source               destination
  158  8216 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:50001 to:149.8.8.3

Chain INPUT (policy ACCEPT 77 packets, 4658 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 37 packets, 2344 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 37 packets, 2344 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:50001

-v是verbose,显示详细信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值