在有些系统中有这样的需求,希望内部网中的某几个ip地址连接互联网,而又希望这些ip地址不被非法用户盗用。可以通过下面的解决办法实现:
- 首先使用ipchains或者iptables来设定只允许合法的ip地址连出。
对于合法ip建立ip/mac捆绑。要讨论这个问题我们首先需要了解arp协议的工作原理,arp协议是地址解析协议(address resolution protocol)的缩写,其作用及工作原理如下:
在底层的网络通信中,两个节点想要相互通信,必须先要知道源与目标的mac地址。为了让系统能快速地找到一个远程节点的mac地址,每一个本地的内核都保存有一个即时的查询表(称为arp缓存)。arp中有影射远程主机的ip地址到其对应的mac地址的一个列表。地址解析协议(arp)缓存是一个常驻内存的数据结构,其中的内容是由本地系统的内核来管理和维护的。默认的情况下,arp缓存中保留有最近十分钟本地系统与之通信的节点的ip地址(和对应的mac地址)。
当一个远程主机的mac地址存在于本地主机的arp 缓存中,转换远程节点的ip地址为mac地址不会遇到问题。然而在许多情况下,远程主机的mac地址并不存在于本地的arp缓存中,系统会怎么处理呢?在知道一个远程主机的ip地址,但是mac地址不在本地的arp缓存中的时候,以下的过程用来获取远程节点的mac地址:本地主机发送一个广播包给网络中的所有的节点,询问是否有对应的ip地址。一个节点(只有一个)会回答这个arp广播信息。在回应的信息包里就会包含有这个远程主机的mac地址。在收到这个返回包后,本地节点就会在本地arp缓存中记录远程节点的mac地址。
如果我们将ip/mac对应关系建立为固定的,也就是对那些合法ip地址建立静态的mac对应关系,那么即使非法用户盗用了ip地址linux路由器在回应这些ip发出的连接请求时则不会通过arp协议询问其mac地址而是使用linux建立的静态mac地址、发出应答数据这样盗用ip者则不会得到应答数据从而不能使用网络服务。
建立静态ip/mac捆绑的方法是:建立/etc/ethers文件,其中包含正确的ip/mac对应关系,格式如下:
192.168.2.32 08:00:4e:b0:24:47
然后再/etc/rc.d/rc.local最后添加:
arp -f
即可 - 2.4内核的iptables可以对ip和mac同时进行限定,使用该功能对合法ip的规则同时限定ip地址和mac地址即可。