关于iptables和虚拟机的问题,急需高手解决!【再开】--〉斑竹帮忙再开一下

steveclark
关于iptables和虚拟机的问题,急需高手解决!【再开】--〉斑竹帮忙再开一下

在linux server上用VMWare做了几个虚拟机,现在想用iptables控制虚拟机的访问。

我做了一下规则:不好使 .
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 172.16.227.131(虚拟机的ip) mh-in-f104.google.com


最后改成
Chain FORWARD(policy DROP)
target prot opt source destination
DROP all -- anywhere mh-in-f104.google.com
都不起作用。。。

难道iptables对虚拟机不起作用??默认为是本机???
是不是需要把虚拟机设置点什么???

[4-30]
今天学习至顶的的材料,学习到IP欺骗,然后终于自己找到解决方法了!~~ 哈哈

1. 首先,把guest虚拟机的网络设定改成Host-only.
2. 必须手动设定虚拟机ip,网关设置为vmnet1的IP,ip地址也必须和vmnet1在同一段
3. 开启IP forwarding功能
   echo 1 > /proc/sys/net/ipv4/ip_forward
4. 手动映射ip到eth0网络
iptables -t -nat -A POSTROUTING -o eth0 -s 192.168.134.128/24 -j MASQUERADE
或者
iptables -t -nat -A POSTROUTING -o eth0 -s 192.168.134.128/24 -j SNAT --to 208.48.153.120-208.48.153.140
5. 写iptables规则
iptalbes -A FORWARD -s 192.168.134.128 -d 209.85.173.99 -j DROP
iptalbes -A FORWARD -s 192.168.134.129 -d 209.85.173.147 -j DROP
2条都有效了,说明我成功了!!哈哈

这个就要相当于自己做了一个Bridge连接方式,不过这个方式是通过iptables做的,当然也可以用它控制!!

其实我几天前问的第一个帖子,斑竹kenduest 和水田青蛙就已经给我正确答案了。但是说得不清楚,不够详细,我刚接触linux和这些东西,无法理解。另外,斑竹platinum给了我很多启示,谢谢大家了~~

[[i] 本帖最后由 steveclark 于 2008-5-1 08:43 编辑 [/i]]

7717060
没明白你的意思
FORWARD链只有用在NAT时才会起作用

vermouth
要看你的网络是怎么配置的了。

steveclark
[quote]原帖由 [i]7717060[/i] 于 2008-4-26 13:31 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6569634&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
没明白你的意思
FORWARD链只有用在NAT时才会起作用 [/quote]

我把它放到output input里也不好使 .

Chain INPUT(policy ACCEPT)
target prot opt source destination
DROP all -- 172.16.227.131(虚拟机的ip) mh-in-f104.google.com


Chain OUTPUT(policy ACCEPT)
target prot opt source destination
DROP all -- 172.16.227.131(虚拟机的ip) mh-in-f104.google.com

steveclark
[quote]原帖由 [i]vermouth[/i] 于 2008-4-26 13:47 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6569644&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
要看你的网络是怎么配置的了。 [/quote]

应该怎么配置?才能让iptables可以控制虚拟机呢? 控制一般的客户端机器怎么弄?

platinum
需要“网络拓扑”、“规则的逻辑正确性”与“访问测试方式”三者对应上才能看出效果

steveclark
[quote]原帖由 [i]platinum[/i] 于 2008-4-27 08:56 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6570295&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
需要“网络拓扑”、“规则的逻辑正确性”与“访问测试方式”三者对应上才能看出效果 [/quote]


[b]网络拓扑:[/b]nat方式, 虚拟机就装在linux服务器上

[b]规则的逻辑正确性:[/b]我吧FORWARD全部阻止了,另外input output也Drop了这个虚拟机的IP

[b]访问测试方式:[/b]我就是直接ping mh-in-f104.google.com

platinum
[quote]原帖由 [i]steveclark[/i] 于 2008-4-27 15:07 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6570440&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]



网络拓扑:nat方式, 虚拟机就装在linux服务器上

规则的逻辑正确性:我吧FORWARD全部阻止了,另外input output也Drop了这个虚拟机的IP

访问测试方式:我就是直接ping mh-in-f104.google.com [/quote]
你在 linux 宿主机上试试 iptables -t mangle -I PREROUTING -j DROP,若虚拟机还可以照常访问,则证明虚拟机不走这个流程

vermouth
需要将真是网卡设定为外网,而虚拟机使用vmware生成的那几个网卡作为内网。
成功后你将内网关掉,虚拟机则无法访问外网。
然后开启真机网卡进行配置,规则这是才会生效。

smilth
[quote]原帖由 [i]steveclark[/i] 于 2008-4-26 12:33 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6569597&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
在linux server上用VMWare做了几个虚拟机,现在想用iptables控制虚拟机的访问。

我做了一下规则:不好使 .
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 172.16.2 ... [/quote]

首先,把策略设置好,到底如何设置策略验证。默认策略是丢弃所有,允许ping通过,还是允许所有,拒绝ping通过。

如果是前者,则可按如下方式书写验证之。

其次,确定网络连接方式,如果只有一台虚拟linux,设置nat方式与宿主主机网络相连通。

ping从linux主机出发:

iptables -F 清空原先可能存在于filter表的规则

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT ( 本机出去的通讯,比如ping包经此外出,icmp类型为echo-request)

iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT (可直接ping宿主主机验证即可)

注意,此种情况下,ping验证时请不要ping 域名,或者于策略中使用域名,因为,策略中没有允许dns通讯的内容。

水田青蛙
回复 #5 steveclark 的帖子

host主机增加一个vmnet,client跟这个vmnet用host-only方式连接
设置iptables做nat,

platinum
[quote]原帖由 [i]水田青蛙[/i] 于 2008-4-28 11:16 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6571298&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
host主机增加一个vmnet,client跟这个vmnet用host-only方式连接
设置iptables做nat, [/quote]
用了 host-only 网络还能通吗?

水田青蛙
[quote]原帖由 [i]platinum[/i] 于 2008-4-28 11:18 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6571301&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]

用了 host-only 网络还能通吗? [/quote]

为什么不可以呢?
我就这么做的

platinum
[quote]原帖由 [i]水田青蛙[/i] 于 2008-4-28 11:47 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6571325&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]


为什么不可以呢?
我就这么做的 [/quote]
默认情况下 host-only 是与 vmware 宿主机物理隔离的
[url]http://www.pconline.com.cn/pcedu/soft/lan/jywzj/0509/696958.html[/url]
[url]http://www.5dmail.net/html/2004-8-31/200483195452.htm[/url]

你又是怎么做的呢?在不修改其他默认配置的情况下也能正常通讯吗?若修改过其他配置,你简单说一句 host-only 又怎么帮助其他人呢?

kenduest
[quote]原帖由 [i]platinum[/i] 于 2008-4-28 12:33 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6571368&ptid=995999][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
默認情況下 host-only 是與 vmware 宿主機物理隔離的
[url]http://www.pconline.com.cn/pcedu/soft/lan/jywzj/0509/696958.html[/url]
[url]http://www.5dmail.net/html/2004-8-31/200483195452.htm[/url]

你又是怎麼做的呢?在不修改其他默認配置的情況下也能正常通訊嗎?若修改過其他配置,你簡單說一句 host-only 又怎麼幫助其他人呢?[/quote]

host only ? 我認為那到是有可能,該架構就是相當於跳線方式直接對連,所以那兩台機器都可以直接互相通訊的。後續若是要連出去就需要 nat 等配置提供該功能。

vmware 內 host-only 使用 VMnet1 該介面,那 windows ip 組態:

[code]
Ethernet adapter VMware Network Adapter VMnet1:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 192.168.80.1
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . :
[/code]

linux 主機選 dhcp 可以取得 ip,ip and routing 組態:

[code]
[root@localhost ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:40:9A:81
          inet addr:192.168.80.128  Bcast:192.168.80.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe40:9a81/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1322 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1413 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:215593 (210.5 KiB)  TX bytes:282436 (275.8 KiB)
          Interrupt:169 Base address:0x1080

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.80.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
[/code]

測試是否可以 ping 到 windows 的 ip :

[code]
[root@localhost ~]# ping 192.168.80.1
PING 192.168.80.1 (192.168.80.1) 56(84) bytes of data.
64 bytes from 192.168.80.1: icmp_seq=1 ttl=128 time=0.405 ms

--- 192.168.80.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.405/0.405/0.405/0.000 ms
[/code]

所以若 windows 本身的可以提供 nat 功能的話,那是有機會可以連出去.... 只是問題是 windows 怎樣提供 nat 就有趣了,這個有興趣的人自己測試:p

而若是 vmware 是