iptables的问题,只允许网段中的一部分进行数据包转发!

由 seacon 在 04-04-2003 22:51 发表:

iptables的问题,只允许网段中的一部分进行数据包转发!

我的网络环境是这样!

内网 eth0 192.168.1.1 255.255.255.0

外网 eth1

现在我写了一条规则!

iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT

允许整个网段的数据包转发!

但是我想只允许网段中的一部分进行数据包转发!

比如只转发192.168.1.2-192.168.1.22这部分网络地址的数据包转发!

请问怎么写!

是不是:

iptables -A FORWARD -s 192.168.1.2/20 -j ACCEPT


由 solaris 在 04-05-2003 18:07 发表:


格式应当是这样的:IP网络号/掩码位数,或是直接写IP地址,你应当把这些IP规到一个子网里面,比如从192.168.0.1-192.168.0.30,这样就可以写为192.168.0.0/27

另外要加上iptables的nat相关语句。


由 doooom 在 04-06-2003 16:10 发表:


后面那个20实际上是bit数,和子网一样。

如果写192.168.0.1/24,就是前24bit,即前3个数字有效。相当于192.168.0.*

如果写192.168.0.1/32 就是四个数字都有效。

你要传送2-22,可以这样写:

另外你是要用这个机器给其他的机器作代理上网?蓿靠梢哉庋?写

在postrouting的地方加ip伪装。将XXX换成你的出口设备比如ppp0或者eth0

iptables -t nat -A POSTROUTING -o XXX -s 192.168.0.1/32 -j DROP

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/28 -j MASQUERADE

iptables -t nat -A POSTROUTING -o XXX -s 192.168.0.23/32 -j DROP

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.16/29 -j MASQUERADE

第一句话屏蔽192.168.0.1,如果你自己是0.1的话就不要这句话了。

第二句屏蔽地址的前28bit,就是允许后4bit变化,这样通过0.1-0.15

第3句是屏蔽0.23

第4句屏蔽前29bit,后3位变化,这样通过0.16-0.23,8个地址


发行版再好,不如自己做的lfs好。


由 seacon 在 04-06-2003 18:25 发表:


关键是我的网络已经分过子网了!!网络地址是192.168.0.0 子网掩码是255.255.224.0!也不知道以前的网管是怎么分的竟然用了192.168.0.0这个子网!这个子网好像是代表整个网络!如果我要使用是192.168.20.1-192.168.20.20可以forward!那我要怎么写!分了子网还能再分吗!


由 seacon 在 04-06-2003 18:49 发表:


关键是我的网络已经分过子网了!!网络地址是192.168.0.0 子网掩码是255.255.224.0!也不知道以前的网管是怎么分的竟然用了192.168.0.0这个子网!这个子网好像是代表整个网络!如果我要使用是192.168.20.1-192.168.20.20可以forward!那我要怎么写!分了子网还能再分吗!


由 doooom 在 04-07-2003 01:47 发表:


这个和你分没有分子网哪有什么关系。后面的掩玛不过是你自己机器treat他们的滤镜而已。

另外我想说,写中文的时候,写英文的时候不要用这么多叹号。显出一副吵架的架势。


发行版再好,不如自己做的lfs好。


由 seacon 在 04-07-2003 10:38 发表:


> quote: > > * * * > > 最初由 doooom 发布
>
> **这个和你分没有分子网哪有什么关系。后面的掩玛不过是你自己机器treat他们的滤镜而已。
>
>
>
> 另外我想说,写中文的时候,写英文的时候不要用这么多叹号。显出一副吵架的架势。 ** > > * * *

谢谢doooom兄。感叹号好像看起来舒服一点。听您老人家的话不用了。


由 doooom 在 04-07-2003 11:56 发表:


呵呵,兄弟客气。

我这些代码也都是纸上谈兵,实际是不是好用可能还要实验。如果你要走2-20的话最简单的方法就是吧那个禁止23的语句重复两边,把21,22也禁掉。


发行版再好,不如自己做的lfs好。


由 seacon 在 04-07-2003 18:12 发表:


对于有些地址可以用ip地址和mac绑定。绑定一个不存在的mac地址。前提是被绑定的ip地址不想分配给其他机器。把屏蔽掉。那样那个ip地址就不能访问到。也可以用此方法来防止别人盗用ip地址。

附带帮定过程:

Linux实现ip和mac绑定

在有些系统中有这样的需求,希望内部网中的某几个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/ether文件,其中包含正确的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地址即可。


由 Snoopy 在 04-07-2003 19:07 发表:


不是192.168.1.0/24 就代表192.168.1后面所有的主机么?

192.168.0.0/16 就代表192.168.后面的主机么???

192.0.0.0/8 就代表192后面所有的主机??是这样的吗 ???????

那你说的192.168.0.0/27这里的27是代表哪些主机呢????


And then in the evening light, when the bars of freedom fall

I watch the two of you in the shadows on the wall

How in the darkness steals some of the choices from my hand

Then will I begin to under


由 seacon 在 04-07-2003 19:40 发表:


> quote: > > * * * > > 最初由 pinksnoopy 发布
>
> 不是192.168.1.0/24 就代表192.168.1后面所有

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus