关于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时才会起作用
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 是