本站文章大部分为作者原创,非商业用途转载无需作者授权,但务必在文章标题下面注明作者 刘世民(Sammy Liu)以及可点击的本博客地址超级链接 http://www.cnblogs.com/sammyliu/ ,谢谢合作
随笔 - 206  文章 - 46  评论 - 755  阅读 - 270万

KVM 虚拟机的 NAT 和 Bridge 网络模式的区别及配置

来源:https://www.jianshu.com/p/110b60c14a8bhttps://blog.csdn.net/wenwenxiong/article/details/47343717

1. 网络模式

网桥模式可以:

1、让客户机和宿主机共享一个物理网络设备连接网络

2、也可以让客户机有自己的IP直连与宿主机一摸一样的网络

原理图:

 

使用命令配置的过程:

1. 建立bridge,并绑定到一个可以正常对外访问的网络接口上,同时让bridge成为本机与外部网络的接口

brctl addbr br0          #添加bridge
brctl addif br0 eth0     #将br0和eth0绑定起来 (可能让网络断掉,最好在本机操作,不要通过网络)
brctl stp br0 on         #将br0设置为启用STP协议
ifconfig eth0 0          #将eth0的IP设置为0
dhclient br0             #将br0网络配置好

建立好bridge后的状态是:eth0进入混杂模式,接收网络中所有数据包,网桥br0进入转发状态。

然后在虚拟机中使用该 br0 网桥即可。

 

2. NAT 模式

NAT 即 Network Address Translation, 网络地址转换,将内网IP数据包包头中的源IP地址转换为一个外网的IP地址,因此内部IP对外是不可见的,隐藏了内部结构更加安全,但对外提供服务则是其局限性,目前通常采用iptables工具进行端口映射解决。
1、相比使用网桥共享同一个网络设备,其区别在于virbr0并未直接绑定到实际的物理网卡,数据包经过virbr0,进行nat后转到IP包转发后从实际的物理网络设备中出去
2、在nat模式下,需要在宿主机上运行一个DHCP服务器给内网的机器分配IP地址,可以使用dnsmasq工具实现,或者通过手工方式指定
原理图:

配置命令:

复制代码
brctl addbr virbr0
brctl stp virbr0 on
brctl setfd virbr0 0 #设置网络转发延时
ifconfig virbr0 192.168.122.1 netmask 255.255.255.0 up


#打开宿主机上的网络转发功能
echo 1> /proc/sys/net/ipv4/ip_forward

#设置iptables 转发规则
iptables -t nat -A POSTROUTING -s 内网ip/24 ! -d  内网ip/24 -j MASQUERADE
复制代码

 

3. Centos 上配置 bridge 模式

在centos中,需要创建一个 bridge,把原来网卡的IP 地址设置为该网桥的地址,然后去除网卡的地址。这些需要通过配置网络接口脚本来实现。

首先配置网桥 ifcfg-mgtbr:

复制代码
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=mgtbr
UUID=2e1a9bac-aaa6-4593-8fd2-7990deaa7803
DEVICE=mgtbr
ONBOOT=yes
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1
IPV6_PRIVACY=no
ZONE=public
复制代码

再配置物理网卡 ifcfg-em1:

复制代码
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=em1
UUID=2e1a9bac-aaa6-4593-8fd2-7990deaa7803
DEVICE=em1
ONBOOT=yes
BRIDGE=mgtbr
复制代码

 

 

 

 

posted on   SammyLiu  阅读(3058)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
历史上的今天:
2017-08-30 [译] OpenStack Pike 版本中的 53 个新功能盘点
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示