如何在我的linux查看我的arp表格?
LinuxArp命令显示和修改地址解析协议(ARP)使用的“IP到物理”地址转换表。
ARP-sinet_addreth_addrARP-dinet_addrARP-a-a通过询问当前协议数据,显示当前ARP项。
如果指定inet_addr,则只显示指定计算机的IP地址和物理地址。
如果不止一个网络接口使用ARP,则显示每个ARP表的项。-g与-a相同。
-v在详细模式下显示当前ARP项。所有无效项和环回接口上的项都将显示。
inet_addr指定Internet地址(IP地址)。
-Nif_addr显示if_addr指定的网络接口的ARP项。
-d删除inet_addr指定的主机。
inet_addr可以是通配符*,以删除所有主机。-s添加主机并且将Internet地址inet_addr与物理地址eth_addr相关联。
物理地址是用连字符分隔的6个十六进制字节。该项是永久的。
eth_addr指定物理地址。
if_addr如果存在,此项指定地址转换表应修改的接口的Internet地址。如果不存在,则使用第一个适用的接口。
示例:添加静态项。
这个很有用,特别是局域网中中了arp病毒以后#arp-s123.253.68.20900:19:56:6F:87:D2#arp-a….显示ARP表。但是arp-s设置的静态项在用户登出之后或重起之后会失效,如果想要任何时候都不失效,可以将ip和mac的对应关系写入arp命令默认的配置文件/etc/ethers中例如:引用root@ubuntu:/#vi/etc/ethers211.144.68.25400:12:D9:32:BF:44写入之后执行下面的命令就好了引用arp-f/etc/ethers为保证重起之后绑定仍然有效,需要把上述命令写入/etc/ethersARP(AddressResolutionProtocol),或称地址解析协议。
本地机向"某个IP地址–目标机IP地址"发送数据时,先查找本地的ARP表,如果在ARP表中找到"目标机IP地址"的ARP表项,(网络协议)将把"目标机IP地址"对应的"MAC地址"放到MAC包的"目的MAC地址字段"直接发送出去;如果在ARP表没有找到"目标机IP地址"的ARP表项,则向局域网发送广播ARP包("目的MAC地址字段"==FF:FF:FF:FF:FF:FF),目标机将向本地机回复ARP包(包含目标机的MAC地址)
linux防火墙发展史?
1. 认识防火墙
从逻辑上讲防火墙可以分为主机防火墙和网络防护墙。
主机防火墙:针对个别主机对出站入站的数据包进行过滤。(操作对象为个体)
网络防火墙:处于网络边缘,针对网络入口进行防护。(操作对象为整体)
从物理上讲防火墙可以分为硬件防火墙和软件防火墙。
硬件防火墙:通过硬件层面实现防火墙的功能,性能高,成本高。
软件防火墙:通过应用软件实现防火墙的功能,性能低,成本低。
2. 系统防火墙发展过程
防火墙的发展史就是从墙到链再到表,也是从简单到复杂的过程。
防火墙工具变化如下:
ipfirewall—>ipchains—>iptables–>nftables(正在推广)
Linux 2.0版内核中:包过滤机制为ipfw,管理工具是ipfwadm。
Linux 2.2版内核中:包过滤机制为ipchain,管理工具是ipchains。
Linux 2.4,2.6,3.0+版内核中:包过滤机制为netfilter,管理工具是iptables。
Linux 3.1(3.13+)版内核中:包过滤机制为netfilter,中间采取daemon动态管理防火墙,管理工具是firewalld。
# 目前低版本的firewalld通过调用iptables(command),它可以支持老的iptables规则(在firewalld里面叫做直接规则),
# 同时firewalld兼顾了iptables,ebtables,ip6tables的功能。
3. iptables和nftables
nftables
nftables诞生于2008年,2013年底合并到Linux内核,从 Linux 3.13起开始作为iptables的替代品提供给用户。
它是新的数据包分类框架,新的linux防火墙管理程序,旨在替代现存的 {ip,ip6,arp,eb}_tables,它的用户空间管理工具是nft。
由于iptables的一些缺陷,目前正在慢慢过渡用nftables替换iptables,同时由于这个新的框架的兼容性,
所以nftables也支持在这个框架上运行直接iptables这个用户空间的管理工具。
nftables实现了一组被称为表达式的指令,可通过在寄存器中储存和加载来交换数据。
也就是说,nftables的核心可视为一个虚拟机,nftables的前端工具nft可以利用内核提供的表达式去模拟旧的iptables匹配,
维持兼容性的同时获得更大的灵活性。
而未来最新的firewalld(0.8.0)默认使用将使用nftables。详情可以看www.firewalld.org
iptables、nftables和firewalld之间的区别与联系
firewalld同时支持iptables和nftables,未来最新版本(0.8.0)默认将使用nftables。
简单的说firewalld是基于nftfilter防火墙的用户界面工具。而iptables和nftables是命令行工具。
firewalld引入区域的概念,可以动态配置,让防火墙配置及使用变得简便。
准确的说:iptables(command)的最底层是netfilter,它的用户空间管理工具是iptables
nftables(command)是iptables(command) 的一个替代品并兼容iptables(command),最底层依然是netfilter,它的用户空间管理工具是nft,
同时未来firewalld最新版(0.8.0)也将默认支持nftables(command)。https://firewalld.org/
iptables会把配置好的防火墙策略交给内核层的netfilter网络过滤器来处理
firewalld会把配置好的防火墙策略交给内核层的nftables包过滤框架来处理
下图为iptables、firewalld、nftables之间的关系图:

4. centos6.X到centos7.X
centos6.X:防火墙由netfilter和iptables构成。其中iptables用于制定规则,又被称为防火墙的用户态;
而netfilter实现防火墙的具体功能,又被称为内核态。简单地讲,iptables制定规则,而netfilter执行规则。
centos7.X:防火墙在6.X防火墙的基础之上提出了新的防火墙管理工具,提出了区域的概念,通过区域定义网络链接以及安全等级。
5.怎样学好防火墙的配置?
1)OSI7层模型以及不同层对应哪些协议必须很熟悉 # 基础必备
2)TCP/IP三次握手,四次断开的过程,TCP HEADER,状态转换 # 基础必备
3)常用的服务端口要非常清楚了解。 # 基础必备
4)常用服务协议的原理,特别是http协议,icmp协议。 # 基础必备
5)能够熟练的利用tcpdump和wireshark进行抓包并分析,这样会更好 # 拓展
6)对计算机网络有研究,至少基本路由交换要很熟悉 # 拓展
6、企业中安全配置原则
尽可能不给服务器配置外网IP,可以通过代理转发或者通过防火墙映射。
并发不是特别大情况有外网IP,可以开启防火墙服务。
大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全。
Linux的协议栈是什么呢?
Linux网络协议栈基于分层的设计思想,总共分为四层,从下往上依次是:物理层,链路层,网络层,应用层。 Linux网络协议栈其实是源于BSD的协议栈,它向上以及向下的接口以及协议栈本身的软件分层组织的非常好。 Linux的协议栈基于分层的设计思想,总共分为四层,从下往上依次是:物理层,链路层,网络层,应用层。 物理层主要提供各种连接的物理设备,如各种网卡,串口卡等; 链路层主要指的是提供对物理层进行访问的各种接口卡的驱动程序,如网卡驱动等; 网路层的作用是负责将网络数据包传输到正确的位置,最重要的网络层协议当然就是IP协议了,其实网络层还有其他的协议如ICMP,ARP,RARP等,只不过不像IP那样被多数人所熟悉; 传输层的作用主要是提供端到端,说白一点就是提供应用程序之间的通信,传输层最着名的协议非TCP与UDP协议末属了; 应用层,顾名思义,当然就是由应用程序提供的,用来对传输数据进行语义解释的“人机界面”层了,比如HTTP,SMTP,FTP等等,其实应用层还不是人们最终所看到的那一层,最上面的一层应该是“解释层”,负责将数据以各种不同的表项形式最终呈献到人们眼前。 Linux网络核心架构Linux的网络架构从上往下可以分为三层,分别是: 用户空间的应用层。 内核空间的网络协议栈层。 物理硬件层。 其中最重要最核心的当然是内核空间的协议栈层了。 Linux网络协议栈结构Linux的整个网络协议栈都构建与Linux Kernel中,整个栈也是严格按照分层的思想来设计的,整个栈共分为五层,分别是 :
1,系统调用接口层,实质是一个面向用户空间应用程序的接口调用库,向用户空间应用程序提供使用网络服务的接口。
2,协议无关的接口层,就是SOCKET层,这一层的目的是屏蔽底层的不同协议(更准确的来说主要是TCP与UDP,当然还包括RAW IP, SCTP等),以便与系统调用层之间的接口可以简单,统一。简单的说,不管我们应用层使用什么协议,都要通过系统调用接口来建立一个SOCKET,这个SOCKET其实是一个巨大的sock结构,它和下面一层的网络协议层联系起来,屏蔽了不同的网络协议的不同,只吧数据部分呈献给应用层(通过系统调用接口来呈献)。
3,网络协议实现层,毫无疑问,这是整个协议栈的核心。这一层主要实现各种网络协议,最主要的当然是IP,ICMP,ARP,RARP,TCP,UDP等。这一层包含了很多设计的技巧与算法,相当的不错。
4,与具体设备无关的驱动接口层,这一层的目的主要是为了统一不同的接口卡的驱动程序与网络协议层的接口,它将各种不同的驱动程序的功能统一抽象为几个特殊的动作,如open,close,init等,这一层可以屏蔽底层不同的驱动程序。
5,驱动程序层,这一层的目的就很简单了,就是建立与硬件的接口层。 可以看到,Linux网络协议栈是一个严格分层的结构,其中的每一层都执行相对独立的功能,结构非常清晰。 其中的两个“无关”层的设计非常棒,通过这两个“无关”层,其协议栈可以非常轻松的进行扩展。在我们自己的软件设计中,可以吸收这种设计方法。