【Linux探索之旅】第四部分第四课:分析网络,隔离防火



内容简介

1、第四部分第四课:分析网络,隔离防火

2、第四部分第五课:源码编译,安装便利


分析网络,隔离防火

俗语说得好:爱国爱家爱师妹! 防火防盗防师兄!

虽然说,Linux本身很安全,至少比Windows安全多了。你看Linux发行版哪有安装杀毒软件的,同样基于修改的Unix系统的苹果的Mac OS系统也几乎不需要装杀毒软件。

 

如果Windows不装个杀毒软件,简直不好意思出门跟别人打招呼(日常黑Windows任务完成 :P)。开个玩笑啦,Windows是很好的系统,小编也使用Windows系统的。

 

不过,在网络上穿行,还是小心为妙。毕竟网上有不怀好意的黑客(或普通人),想方设法获取我们的隐私,或者控制我们的电脑。

 

这一课很重要,我们来学习几个厉害的命令,能帮助我们分析网络,再来学习如何使用轻量级的防火墙。

 

我们一起学习经由电脑的网络通信是怎么回事。事实上,当你的电脑连接到互联网(Internet)时,总会有那么一些电脑里的软件会连上网,然后下载或上传信息,很多时候还是偷偷地在后台进行。

 

如何监控此等“大逆不道”的行径呢?如何知道哪个软件正在与网络通信,在哪个端口上进行呢?就是本课要探究的。

 

还有,懂得配置防火墙是很必要的,不管是在你的家用电脑上还是在你租用的服务器上。因为这能有效保护电脑,免得一些软件未经你同意就和互联网交换信息。使用防火墙是一个重要的安全防护措施,特别是每个系统管理员(System Administrator)更是不能逃避,总要学习。

 

好了,废话了这么多,开篇入正题吧。

 

希望你们没有嫌我啰嗦,真的不要... 如果你嫌我啰嗦,你要说出来,你不说出来,我怎么知道你嫌我啰嗦呢?如果你说出来了,但是不够大声,那也是不行的,不大声我听不清楚啊...

 

(好了,好了,不要再扔鸡蛋了... 你,说的就是你啦,还拿了一个番茄准备扔诶,要不要辣么夸张)要跨年(2015-2016)了,就原谅小编顽皮一次吧。

 

大家2016加油啊!要做T型人才噢~

 


host和whois命令:告诉我你是谁

 

我们已经知道,每台连上网的电脑都会被一个IP地址所标识,这个IP地址是全球唯一的。

 

目前,大多数的IP地址是这样的形式:

 

96.172.150.23

 

这样的形式被称为IPv4格式(以小数点分隔)。IP就是Internet Protocol(网际协议),v是version(版本)的首字母,4表示这是版本四。

 


0?wx_fmt=png

 

不过,因为IPv4的地址不够用的关系,现在已经有不少IP地址的格式是IPv6的格式了,已有的IPv4地址也被慢慢替换成IPv6。IPv6的IP地址类似这样:

 

fa80::109:62fa:cb80:29d2

 

上面的是简写形式(两个冒号::用于合并连续的几组0),完整的形式是:

 

fa80:0000:0000:0000:0109:62fa:cb80:29d2

 

以冒号分隔的8组4位的16进制(也就是8组16位二进制,因为2的4次方是16),所以 8 * 16 = 128

 

IPv6把 IP 地址由IPv4的32 位(4个2的8次方,4 * 8 = 32)增加到 128 位。

 

2的32次方是42亿多一点。随着互联网的快速成长,IPv4的42亿个地址的分配最终于2011年2月3日用尽。而IPv6的128位可以提供的IP地址数量可达3.402823669 × 10^38个,届时每个人家居中的每件电器,每件对象,甚至地球上每一粒沙子都可以拥有好几个IP地址。根本用不完,IP多就是这么任性。

 

我们可以为每一个IP地址绑定一个主机名,主机名的英语是host name。

 

注意:

这里的主机名其实应该被称为完整主机名: Fully Qualified Domain Name (FQDN),是由主机名(host name)和域名(domain name)一起构成。我们一般会用主机名或域名来代称FQDN,其实不是那么准确。

 

(domain name和host name是不同概念,有点小复杂,可以去看看《鸟哥的Linux私房菜》的对应课程,讲得非常通俗易懂:http://linux.vbird.org/linux_server/0350dns.php)

 

例如,程序员联盟的服务器的完整主机名是www.coderunity.com,这里的www是主机名,coderunity.com是域名。对应的IP地址是58.96.181.197

 

下面我们会用主机名或域名代指FQDN了。

 

相比于记忆一串数字(IPv4)或数字+字母(IPv6)的IP地址,人脑更擅长记住主机名。如下图,IP地址和主机名对应:

 

0?wx_fmt=jpeg

 

IP地址和主机名的互相转换

 

使用host(host是英语“主机”的意思)这个命令我们可以实现IP地址和主机名的互相转换,例如:

 

host coderunity.com (或 host www.coderunity.com)会得到IP地址:

58.96.181.197

 

而host 58.96.181.197则会得到主机名

 

host命令的其他参数选项,可以用man host来查考。

 

自定义解析

 

IP地址和主机名的解析是由DNS(Domain Name System,域名解析系统)服务器完成的。我们不深入了解DNS的具体工作原理了,半天解释不完,可以看上面给出的鸟哥的链接里的内容。

 

因此,当你在浏览器的地址栏里输入coderunity.com 时,你就能收到由网络上的DNS服务器帮你解析出来的IP地址,你就可以访问程序员联盟的官网了。

 

你当然不能修改DNS服务器上的主机名和IP地址的对应关系列表(因为有风险,会影响到很多人)。但是你可以自定义你电脑上主机名和IP地址的对应关系。

 

以root身份打开/etc/hosts 文件:

sudo nano /etc/hosts

 

0?wx_fmt=jpeg

 

可以看到一些IP地址和主机名的对应关系,例如:

 

127.0.0.1 对应了localhost

 

127.0.1.1 对应了oscar-laptop,就是小编电脑的主机名

 

下面还有一些IPv6格式的IP地址。

 

你可以往里面添加自己的解析对。写在一行里,在IP地址和主机名之间至少要留一个空格。

 

那么自定义IP地址和主机名之间的解析关系,有什么用呢?

 

当然有用,有的时候,网络上负责解析域名的DNS服务器可能暂时出现故障(很少见),那这时你在地址栏直接输入IP地址可以访问对应网站,但是输入主机名(域名)则不能访问了,因为没有DNS服务器解析,域名是不能被识别的。

 

这时,你自定义在本地Linux系统的/etc/hosts文件中的解析规则就可以发挥作用了。你还是可以访问网站。

 

例如你可以加一条程序员联盟网站的解析对:

58.96.181.197    coderunity.com

 

但是这样的方法也有缺陷:假如你的主机的IP地址换了,那你输入域名就不能上那个网站了。所以,一般来说,我们还是靠经常更新解析对的网络上的DNS服务器更好(一般一天更新一次)。

 

对于局域网,这个host文件也是很有用的。

 

例如在自己家里建立的局域网里面,有你的电脑,还有你老爸的电脑。那你不想记住老爸的电脑的IP地址,怎么办呢?可以添加一条解析对,例如:

192.168.0.7     father-laptop

 

这样,老爸的电脑的IP地址对应的主机名在你这里就成为father-laptop了,你就可以更方便地访问老爸的电脑。

 

例如,如果在老爸的电脑里你有一个账户叫oscar,那么用之前学的SSH来登录老爸电脑上的oscar账户,就是:

ssh oscar@father-laptop

 

就不用输入:

ssh [email protected]

 

whois:了解有关域名的信息

 

whois这个命令很好记,由who和is两部分组成,who是英语“谁”的意思,is是英语“是”的第三人称单数形式。所以连起来表示:是谁

 

每一个域名在登记注册时都须要填写:姓,名,联系地址,联系方式,等等。这是规定。

 

whois命令就可以帮助我们轻松获得域名背后的这些信息

 

可以选一个主机名来试试,例如:

whois coderunity.com

 

你就有小编的邮寄地址啦,要送我新年礼物就赶紧哦。哈哈,开玩笑的~

 


ifconfig和netstat命令:控制和分析网络流量

 

我们接着学习两个非常强大的命令:ifconfig和netstat。

 

ifconfig:列出网络接口

 

ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是(Network) Interface Configuration。if是Interface的缩写,表示“接口”;configuration是“配置”的意思。

 

一般来说,你的电脑拥有好几个网络接口,也就是说有多种连接网络的方式。

 

运行ifconfig命令,显示如下:

 

0?wx_fmt=jpeg

 

在小编的电脑上显示有三个网络接口,分别是:

 

eth0,lo,wlan0

 

在你的电脑上可能网络接口多于三个,也可能少于三个,本不足为奇,取决于你电脑的设备。幸好小编的电脑的三个网络接口都是最常见的三个,详述如下:

eth0:对应有线连接(对应你的有线网卡),就是用网线来连接的上网(一般是RJ45网线,见下图),如果你的电脑目前使用网线来上网,那就是在使用这个接口。有些电脑可能同时有好几条网线连着(有好几个有线接口),例如服务器,那么除了eth0(第一块有线网卡),你还会看到例如eth1,eth2,等等。

lo:本地回环(Local Loopback,对应一个虚拟网卡)。可以看到它的IP地址是127.0.0.1,似曾相识是吗?对啊,之前我们在/etc/hosts文件中看到对应localhost的就是这个IP。每台电脑都应该有这个接口,因为它对应着连向... 自己的链接。这也是我们称之为本地回环的原因:所有经由这个接口发送的东西都会回到你自己的电脑。看起来好像并没有什么用,但是有时为了某些缘故(可以百度继续探究),我们需要连接自己。例如用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架设的Web网站了。但只有你自己能看得到,局域网的其它主机或用户无从知道。

wlan0:对应Wi-Fi无线连接(对应你的无线网卡)。假如你有好几块无线网卡,那么会看到wlan1,wlan2,等等。

 

 

0?wx_fmt=jpeg

 

仔细观察上面ifconfig输出的信息,你猜到小编此时用的是哪种方式连网的吗?

 

聪明如你应该猜到了(可不要害怕阅读一堆英语哦)。是的,小编此时用的是有线连接的方式上网。证明就在eth0的信息中:

 

RX packets : 4853

TX packets : 4821

 

分别是接收包和发送包的数目。RX是receive(表示“接收”)的缩写,TX是transmit(表示“发送”)的缩写。

 

而wlan0的信息中,这两行是0。

 

当然,本地回环的这两行也有148呢。所以说,给自己发送东西也是会发生的。

 

ifconfig命令还可以用来配置网络接口。但这有些超出本课程的范围了,毕竟需要懂一些网络方面的知识才能配置啊,不然配错了就糟了。

 

但是,有一个简单的配置方式我们可以学习:

接口的激活/关闭

 

使用格式如下:

ifconfig interface state

 

替换 :

  • interface:由你想要修改的网络接口名称代替(eth0,wlan0等等)。

    state:由up或down代替,分别表示激活和关闭对应接口。

     

    例如:

    ifconfig eth0 down

     

    关闭eth0这个有线接口,之后就没有任何网络传输会在eth0上进行了。

    ifconfig eth0 up

     

    激活eth0这个有线接口。

     

    配置IP地址

     

    用ifconfig命令可以配置网络接口的IP地址和其他数据

     

    例如:

    ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255  

     

    上面的命令用于给eth0网卡配置IP地址:192.168.120.56,加上子网掩码:255.255.255.0,加上个广播地址: 192.168.120.255

     

    还有更多命令选项就用man ifconfig来查看吧。

     

    netstat : 网络统计

     

    netstat命令很好记,它由两部分组成:net和stat。

     

    net是network的缩写,表示“网络”;stat是statistics的缩写,表示“统计”。所以顾名思义就是对网络信息进行统计啦。(再论学英语对编程的重要性)

     

    假如你没有一些网络方面的知识,那么netstat命令的输出可能难以理解,但是也没那么难。假如你要了解你的电脑正在网络上做什么,那么netstat是不二选择。

     

    netstat可以显示很多信息,但是我们可以用参数来控制显示信息的种类和样式。下面介绍几个常用的参数吧:

     

    netstat -i : 网络接口的统计信息

     

    首先,试试i参数吧:

    netstat -i

     

    会显示一张统计列表,列出你电脑的所有网络接口的一些统计信息,例如小编的电脑就列出了eth0,lo,wlan0这三个接口的使用信息。

     

    netstat -uta : 列出所有开启的连接

     

    运行

    netstat -uta

     

    0?wx_fmt=jpeg

     

    参数uta分别表示:

    • -u : 显示UDP连接(u是udp的首字母)

      -t : 显示TCP连接(t是tcp的首字母)

      -a : 不论连接的状态如何,都显示(a是all的首字母)

       

      TCP和UDP是两种不同的协议,用于在网络上传输数据。

       

      UDP(User Datagram Protocol,用户数据报协议)一般用于网络游戏,音频通讯(例如Skype)。除此之外,一般来说TCP(Transmission Control Protocol,传输控制协议)是最常用的。一般在互联网上都是用TCP/IP协议。可以去看看小编的《TCP/IP探索之旅》。

       

      我们也可以只显示TCP连接的信息:

      netstat -ta
      

       

      或者只显示UDP连接的信息(不常用):

      netstat -ua
      

       

      再来看看上面图片中state(状态)那一列的信息,有好几种不同状态:

       

      • ESTABLISHED:与远程电脑的连接已建立

        TIME_WAIT : 连接正在等待网络上封包的处理,一旦处理完毕就开始关闭连接

        CLOSE_WAIT:远程服务器中止了连接(也许你太久没什么动作,处在不活跃状态)

        CLOSED:连接没有被使用

        CLOSING:连接正在关闭,但有些数据还没有发送完毕

        LISTEN:监听着可能进入的连接。此时连接还没有被使用。

         

        当然,状态还不止这几种,其他的可以在netstat的命令手册中找到(用man netstat)。

         

        我们再来看看端口的信息,就是上面图片中冒号(:)之后的数据。

         

        事实上,我们连接其他电脑,可以透过不同的端口(port),有点类似门户。比如我去朋友家,可能进他们的厨房门,书房门,地下室门,等等。不同的端口用处不同。进厨房门可能看看做菜如何,进书房门可能一窥书香,进地下室门可能去品品葡萄酒。反正卧室门是不可以随便进的~

         

        摘自百度百科:

         

        ==============

        "端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。

        ==============

         

        如下图所示:

         

        0?wx_fmt=jpeg

        你可以加上-n参数,假如你想让端口信息以数字的形式显示,而不是像上图中那样有点看不懂的状态,比如https,nfs,mysql等等。

         

        80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“:80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“:80”了。

         

        110端口是为POP3(邮件协议3)服务开放的,用于收发电子邮件。

         

        21端口用于FTP(File Transfer Protocol,文件传输协议)服务,FTP服务主要是为了在两台计算机之间实现文件的上传与下载。

         

        netstat -lt : 列出状态是LISTEN的统计信息

         

        netstat -s : 列出总结性的统计信息

         

        还有更多命令选项就用man ifconfig来查看吧。

         


        iptables:参考系防火墙

         

        现在既然我们已经知道如何分析网络传输,我们就趁热打铁,学习如何用防火墙来过滤网络传输。

         

        Linux下著名的防火墙是iptables。它有点年纪了,已经服役十几年。iptables命令可以制定一些规则,规定其他电脑可以使用哪些端口来连接你的电脑(入),以及你的电脑可以连接哪些端口(出)。也可以通过IP地址来过滤。类似下图所示:

         

         

        0?wx_fmt=jpeg

         

        例如,我想要拦截所有FTP的连接,那么我可以用iptables封锁21端口。

         

        安装iptables防火墙

         

        如果没有安装iptables需要先安装,

         

        CentOS执行:

        sudo yum install iptables
        

         

        Debian/Ubuntu执行:

        sudo apt-get install iptables
        

         

        iptables的使用需要root身份

         

        为了使用iptables,你需要切换到root身份:

         

        sudo su
        

         

        iptables -L : 显示所有规则

         

        可以看到三个区域:

        • Chain INPUT : 对应控制《进入》的网络传输的规则

          Chain FORWARD : 对应控制《转发》的网络传输的规则

          Chain OUTPUT : 对应控制《出去》的网络传输的规则

           

          暂时我们还没有制定任何规则。我们慢慢来学习。

           

           

          1、清除已有iptables规则(慎用)

          iptables -F
          iptables -X
          iptables -Z
          

           

          2、开放指定的端口

          #允许本地回环接口(即运行本机访问本机)
          iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
          
          # 允许已建立的或相关连的通行
          iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          
          #允许所有本机向外的访问
          iptables -A OUTPUT -j ACCEPT
          
          # 允许访问22端口
          iptables -A INPUT -p tcp --dport 22 -j ACCEPT
          
          #允许访问80端口
          iptables -A INPUT -p tcp --dport 80 -j ACCEPT
          
          #允许FTP服务的21和20端口
          iptables -A INPUT -p tcp --dport 21 -j ACCEPT
          iptables -A INPUT -p tcp --dport 20 -j ACCEPT
          

           

          #如果有其他端口的话,规则也类似,稍微修改上述语句就行。

           

          #禁止其他未允许的规则访问(注意:如果22端口未加入允许规则,SSH链接会直接断开。)

          1).用DROP方法

          iptables -A INPUT -p tcp -j DROP
          

          2).用REJECT方法

          iptables -A INPUT -j REJECT
          iptables -A FORWARD -j REJECT
          

           

          3、屏蔽IP

          #如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过
          #屏蔽单个IP的命令是
          iptables -I INPUT -s 123.45.6.7 -j DROP
          
          #封整个段即从123.0.0.1到123.255.255.254的命令
          iptables -I INPUT -s 123.0.0.0/8 -j DROP
          
          #封IP段即从123.45.0.1到123.45.255.254的命令
          iptables -I INPUT -s 124.45.0.0/16 -j DROP
          
          #封IP段即从123.45.6.1到123.45.6.254的命令是
          iptables -I INPUT -s 123.45.6.0/24 -j DRO
          

           

          4、查看已添加的iptables规则

           

          iptables -L -n
          

          v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
          x:在 v 的基础上,禁止自动单位换算(K、M) vps侦探
          n:只显示IP地址和端口号,不将ip解析为域名

           

          5、删除已添加的iptables规则

           

          将所有iptables以序号标记显示,执行:

          iptables -L -n --line-numbers
          

           

          比如要删除INPUT里序号为8的规则,执行:

          iptables -D INPUT 8
          

           

          6、iptables的开机启动及规则保存

           

          CentOS上可能会存在安装好iptables后,iptables并不开机自启动,可以执行一下:

          chkconfig --level 345 iptables on
          

          将其加入开机启动。

           

          CentOS上可以执行:service iptables save 保存规则。

           

          Debian/Ubuntu上iptables是不会保存规则的。

           

          需要按如下步骤进行,让网卡关闭是保存iptables规则,启动时加载iptables规则。

           

          如果当前用户不是root,即使使用了sudo,也会提示你没有权限,无法保存,所以执行本命令,你必须使用root用户。

           

          可以使用sudo -i 快速转到root,使用完成,请及时使用su username切换到普通帐户。

           

          为了重启服务器后,规则自动加载,我们创建如下文件:

          sudo vim /etc/network/if-pre-up.d/iptables#!/bin/bash
           iptables-save > /etc/iptables.rules
          

           

          添加执行权限。

          chmod +x /etc/network/if-pre-up.d/iptables
          

           

          附上基础规则:

          *filter 
          :INPUT ACCEPT [106:85568]
          :FORWARD ACCEPT [0:0]
          :OUTPUT ACCEPT [188:168166]
          :RH-Firewall-1-INPUT - [0:0]
          
          #允许本地回环接口(即运行本机访问本机)
          -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
          
          #允许已建立的或相关连的通行
          -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          
          #允许所有本机向外的访问
          -A OUTPUT -j ACCEPT
          
          #允许PPTP拨号到外网
          -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
          
          #仅特定主机访问Rsync数据同步服务
          -A INPUT -s 8.8.8.8/32 -p tcp -m tcp --dport 873 -j ACCEPT
          
          #仅特定主机访问WDCP管理系统
          -A INPUT -s 6.6.6.6/32 -p tcp -m tcp --dport 8080 -j ACCEPT
          
          #允许访问SSH
          -A INPUT -p tcp -m tcp --dport 1622 -j ACCEPT
          
          #允许访问FTP
          -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
          -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
          
          #允许访问网站服务
          -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
          
          #禁止所有未经允许的连接
          -A INPUT -p tcp -j DROP
          
          #注意:如果22端口未加入允许规则,SSH链接会直接断开
          #-A INPUT -j REJECT
          #-A FORWARD -j REJECT
          COMMIT
          


          可以使用一下方法直接载入:

           

          1、复制上面的规则粘贴到这里,保存本文件

          sudo vim /etc/iptables.test.rules
          

          2、把本规则加载,使之生效,注意,iptables不需要重启,加载一次规则就成了

          sudo iptables-restore < /etc/iptables.test.rules
          

          3、查看最新的配置,应该所有的设置都生效了.

          sudo iptables -L -n
          

          4、保存生效的配置,让系统重启的时候自动加载有效配置(iptables提供了保存当前运行的规则功能)

          iptables-save > /etc/iptables.rules
          

           

          看着很复杂,因为还没学习脚本语言和Vim编辑器的关系。刚好,我们第五部分就会学习Vim编辑器和脚本。

           

          如果你想提前试试,也可以看Ubuntu官方的关于保存和配置开机加载iptables规则的文章:https://help.ubuntu.com/community/IptablesHowTo

           

          我们也见识到了,iptables的配置相当繁复,普通用户简直望而却步。幸好,有一些软件可以帮助我们减轻痛苦:

           

          UFW - Uncomplicated Firewall

           

          UFW是Uncomplicated Firewall的缩写,顾名思义这个软件是“不复杂的防火墙”,比iptables简单很多。但ufw并不是在每个Linux发行版中都有的,幸好,Ubuntu中有。

           

          Ubuntu官方UFW文档:https://help.ubuntu.com/community/UFW

           

          中文Ubuntu官方UFW文档:http://wiki.ubuntu.org.cn/Ufw%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

           

          当然了,还有更好的图形界面的UFW:gufw

           

          Ubuntu官方GUFW文档:https://help.ubuntu.com/community/Gufw

           

          注意:

          新的防火墙子系统/包过滤引擎nftables在 Linux 3.13 中替代有十多年历史的iptables。iptables/netfilter是在2001年加入到2.4内核中。

           

          诞生于2008年的nftables设计替代iptables,它提供了一个更简单的Kernel ABI,减少重复代码,改进错误报告,更有效支持过滤规则。

           

          除了iptables,nftables还将替代ip6tables、arptables和ebtables。Linux内核的第一代包过滤机制是ipfwadm(1.2.1内核,1995年),之后是ipchains(1999年),iptables。nftables是第四代。

           

          nftables引入了一个新的命令行工具nft。nft是iptables及其衍生指令(ip6tables,arptables)的超集。

           

          同时,nft拥有完全不同的语法。如果你习惯于iptables,这是个不好的消息。但是有一个兼容层允许你使用iptables,而过滤是由内核中的nftables完成的。

           

          但是基本的原理是类似的,nftables比iptables更方便,使用更有效率,可以把一些命令合并。

           

          例如:

           

          你想用iptables记录并丢弃一个包,你必须写两条规则,一条记录,一条丢弃:

           

          iptables -A FORWARD -p tcp --dport 22 -j LOG
          iptables -A FORWARD -p tcp --dport 22 -j DROP
          

           

          使用nft,你可以把两个目标合并到一起:

           

          nft add rule filter forward tcp dport 22 log drop
          

           

          所以,假如你的Linux内核版本是3.13之前的,那就继续使用iptables;如果是3.13版本之后,那就用nftables吧(其实nftables要从3.15版本才开始比较成熟)。

           

          还有更多命令选项就用man iptables和man nftables来查看吧。

           


          总结

           

          • 在Internet(互联网)上,每台电脑都由IP地址来标识。例如:89.210.135.74

            我们可以把一个主机名绑定到一个IP地址上,主机名相对IP地址更容易被记住。例如:coderunity.com 在很多场合,用主机名就可以代替IP地址了。

            host命令可以从IP地址解析出对应主机名,或者从主机名解析出IP地址。

            ifconfig命令列出你电脑上的网络接口(对应虚拟网卡或实体网卡),可以配置和操作这些接口。

            netstat列出你电脑上打开的连接,说明当下哪些端口正打开着,一个端口就好比引导出入你电脑的门户。

            可以用iptables来拦截进入某些端口的连接,它是一个很不错的防火墙。但是配置比较复杂。iptables配置很繁琐,可以用ufw软件来减轻压力。从Linux 3.13开始,nftables替代了iptables。

             


            第四部分第五课预告

             

            今天的课就到这里,一起加油吧!

            下一课我们学习:源码编译,安装便利

    相关内容

      暂无相关文章