关于iptables和虚拟机的问题,重问!悬赏全部处女分

steveclark
关于iptables和虚拟机的问题,重问!悬赏全部处女分

在linux server上用VMWare做了[b]几个[/b]虚拟机,虚拟机网络设置为NAT,虚拟机可以正常上网,现在想用iptables控制虚拟机的访问。

我做了一下规则,阻止DROP全部FORWARD,为什么虚拟机还是可以上网呢??
[color=blue]Chain FORWARD(policy DROP)
target prot opt source destination[/color]

然后,我把规则加到nat表
[color=blue]Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DROP       all  --  anywhere             mh-in-f104.google.com [/color]
还是能访问mh-in-f104.google.com

然后。。。
[color=blue]Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP       all  --  anywhere             mh-in-f104.google.com [/color]
现在所有虚拟机不能访问mh-in-f104.google.com了。

但是如果我只限制一台虚拟机不能访问
[color=blue]Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP       all  --  172.16.227.131             mh-in-f104.google.com [/color]
就没有效果!

[b]如果不是虚拟机,是一般的客户端机器应该怎设置IPTABLE呢?[/b]

[[i] 本帖最后由 steveclark 于 2008-4-29 14:38 编辑 [/i]]

platinum
[quote]原帖由 [i]steveclark[/i] 于 2008-4-29 13:59 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6572762&ptid=996906][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]


iptables -I FORWARD -j DROP  试过不行。 还是可以访问外网。 虚拟机的网络是nat设定的 [/quote]
OK,那就检查你的网络拓扑,你的虚拟机上网的数据流没有经过你的 Linux 数据匹配框架

steveclark
回复 #1 steveclark 的帖子

我现在是想让不同的虚拟机可以访问不同的网站,也就是说不同的虚拟机访问权限不同

steveclark
2 小时玩转 iptables 讲义企业版 v1.5.4 学习中。。。:em12:

感觉上虚拟机应该是和普通的服务器客户端机器差不多的:shock:

platinum
如果他们的数据流经过你的 Linux,那么只需 iptables -I FORWARD -j DROP 即可
具体用法见置顶

steveclark
[quote]原帖由 [i]platinum[/i] 于 2008-4-29 13:40 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6572743&ptid=996906][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
如果他们的数据流经过你的 Linux,那么只需 iptables -I FORWARD -j DROP 即可
具体用法见置顶 [/quote]

iptables -I FORWARD -j DROP  试过不行。 还是可以访问外网。 虚拟机的网络是nat设定的

steveclark
[quote]原帖由 [i]platinum[/i] 于 2008-4-29 13:40 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6572743&ptid=996906][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
如果他们的数据流经过你的 Linux,那么只需 iptables -I FORWARD -j DROP 即可
具体用法见置顶 [/quote]

[color=blue]iptables -I FORWARD -j DROP [/color]不好使。

[color=blue]iptables -t -nat -I PREROUTING -j DROP [/color]也不灵

但是[color=blue]iptables -t -nat -I OUTUT -j DROP[/color] 可以。。。说明应该是走nat的

[color=blue]iptables -t -nat -I OUTUT -d [url=http://www.google.com][color=blue]www.google.com[/color][/url] -j DROP[/color] 也有效 所有的虚拟机不能访问google但是其他地方可以

[color=blue]iptables -t -nat -I OUTUT -s 某个虚拟机IP -d [url=http://www.google.com][color=blue]www.google.com[/color][/url] -j DROP[/color]无效。该虚拟机还是可以访问google.

[[i] 本帖最后由 steveclark 于 2008-4-29 14:41 编辑 [/i]]

xinyv
OUTPUT(NAT)
OUTPUT
POSTROUTING
在这3个链 DROP 应该可以实现你的需求。

steveclark
看了置顶的材料以后 突然大彻大悟了!!

所有虚拟机是通过 一个虚拟机软件IP做路由 然后才访问linux服务器的,所以对iptables来说当然是本地访问,而且所有的虚拟机对iptables来说当然是只有一个ip.

所以要想实现不同虚拟机访问权限不同,也许用bridge大概可以,明天试试看,如果还不行这个功能就是实现不了!!!

paub
回复 #1 steveclark 的帖子

需要将你的linux server做为虚拟机的网关,iptables才起作用

liwensi
[quote]原帖由 [i]paub[/i] 于 2008-4-30 10:02 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6573691&ptid=996906][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
需要将你的linux server做为虚拟机的网关,iptables才起作用 [/quote]


linux server只是局域网里面的一个普通机器,也是通过别的Server上网的,如果有2个网卡就可以吧linux server作为虚拟机的网关了。