1
pekingzcc 2017-02-27 17:05:05 +08:00 1
libvirt 支持网络虚拟化功能 ,这些功能的实现就是基于 iptables 来做的,所以不管你有没有写开机脚本清空 iptables 规则,只要重启 libvirt ,就会增加这些规则。
比较纳闷为什么 实现 NAT 网络会跟 FORWARD 链第 2,3 条规则 冲突呢,我看第 2,3 条规则就是跟 libvirt 创建的 virbr0 网桥相关啊?楼主是用 virbr0 这个网桥实现 nat 吗? |
2
webjin1 OP @pekingzcc 是的,实现 nat ,无法帮我转发数据包出去,去掉这 2 条规则,我内网的虚拟机就可以与外界通信。 那你知道怎么去修改那些默认的配置吗?或者清空他。
|
3
pekingzcc 2017-02-27 21:50:35 +08:00
我不知道怎么去修改这些默认的配置,但是可以提供给你一些思路:
1 ,你用 libvirt 创建的虚拟机如果没有特殊配置的话网络类型默认应该就是 nat ,这种情况,如果配置正确的话,虚拟机可以联通外界,但是外界无法主动联通你的虚拟机。 2 ,我猜测楼主如果是想实现外界直接联通虚拟机的功能。这种情况的话我暂时想到两种方法:一种是网络模式使用 bridge 模式,另一种方法是进行端口映射,将虚拟机的数据映射到宿主机的端口,但还是建议使用第一种方式,相对简单点。 |
4
webjin1 OP @pekingzcc 不是桥接配置公网 IP ,而是 NAT ,我 NAT 的规则做好了。 FORWARD 链第 2,3 条规则阻碍 NAT 下的虚拟机无法 ping 通外面。好像 icmp-port-unreachable 这个只是 ping 协议的过滤。我等下再看看可以上网浏览网页吗?
|
5
webjin1 OP @pekingzcc 我找到开机启动不让他还原的解决方案了。、
编辑文件 /etc/rc.local sleep 1m ###重点在这里 iptables -F iptables -X iptables -t mangle -F iptables -t raw -F iptables -t nat -F iptables -t nat -X iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o br0 -j MASQUERADE iptables -t nat -A PREROUTING -p tcp --dport 52003 -j DNAT --to-destination 192.168.0.3:22 |