荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 2405|回复: 3

HYPER-V让内部的虚拟机可以正常上网

[复制链接]

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
发表于 2019-2-1 18:20 | 显示全部楼层 |阅读模式
服务器的2个网卡
比如有一台公网服务器,2个网卡
网卡A是有公网IP的
网卡B没有插网线

用这台服务器搭建了hyper-v想让里面的虚拟机可以访问外网有下面2种方法:

第一种:
网卡A开启网络共享,共享给网卡B,然后网卡B就会被默认设置一个IP
然后在hyper-v里面添加虚拟交换机  外部网络 选择网卡B
最后虚拟机使用这个虚拟交换机就能上网了,自动获取IP,网关就是网卡B的IP
这个不需要搭建DHCP,第一步设置共享的时候就已经相当于设置了一个网卡B同网段的DHCP服务器了  



第二种:
把服务器配置为路由器,网卡A充当WAN口  网卡B充当LAN口
然后hyper-v配置虚拟交换机 外部-网卡B
然后服务器搭建DHCP服务,地址池是网卡B的网段的
这样虚拟机也可以直接通过DHCP获取到IP实现上网
(但是这种方式我遇到过bug,网络突然非常卡,估计不知道是什么地方有bug产生了广播风暴)


端口映射的方法是
在服务器上打开cmd

这条可能是开启IPV6的转发
netsh interface ipv6 install
新增转发
netsh interface portproxy add v4tov4 listenaddress=网卡A的IP listenport=3307 connectaddress=虚拟机的IP connectport=3306
取消
netsh interface portproxy delete v4tov4 listenaddress=网卡A的IP listenport=3307
查看
netsh interface portproxy show v4tov4

回复

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2019-2-7 18:41 | 显示全部楼层
第三种:
个人推荐使用这种方式

https://docs.microsoft.com/zh-cn ... t-a-virtual-machine

打开cmd输入powershell

然后依次输入下面的命令

第一步:创建虚拟交换机
New-VMSwitch -SwitchName "NatSwitchName" -SwitchType Internal
#"NatSwitchName" 这个名称可以自己定义

第二步:查看刚刚新建的虚拟交换机的序号
Get-NetAdapter

第三部:给虚拟交换机设置IP
New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex 25
最后一个index就是刚刚查看的序号

第四步:启用NAT网络
New-NetNat -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 192.168.0.0/24
名称可以自己定义   后面的网段和上一步的IP在同一个网段



一个服务器里面好像只能有个NAT网络 如果不小心多建了几个 可以删除
Get-NetNat | Remove-NetNat


虚拟机好像需要手动设置IP
回复 支持 反对

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2019-2-7 22:04 | 显示全部楼层
https://docs.microsoft.com/zh-cn ... t-magazine/hh750394(v=msdn.10)
hyper-v有内存开销 虚拟机不能完全占完内存,否则启动不起来
我刚刚测试了以下 16G的服务器,还剩余2.3G的时候虚拟机可以起来,实际上的内存使用率是12G
也就是说有6G的内存,不能用于虚拟机
一部分被2016吃了,2.3G的剩余不能被虚拟机利用
看来hyper-v对内存的管理确实一般,还是vsphere好啊
刚刚又测试了以下,发现任务管理器 内存-内存组合 的那个图形那里
只有可用的部分才能被虚拟机使用 中间的备用是不能被虚拟机使用的 正在查找怎么释放这些备用内存

https://docs.microsoft.com/en-us/sysinternals/downloads/rammap
下载这个软件
运行以后 选择Empty-Empty Standby List就行了
但是就是心理作用,实际没任何用处
我的服务器32G内存 备用内存占了5G,就算释放了,虚拟机还是起不来,还是只能设定为之前的数值
唯一的方法就是重启服务器

看来hyper-v对内存的管理确实不怎么好  还是vsphere强些

回复 支持 反对

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2023-5-3 22:44 | 显示全部楼层
忘记当时写这个帖子是什么状态了
现在看来当时完全陷入了误区

直接在hyper-v里面建立一个虚拟外部网卡
再建立一个内部网卡

然后装一个linux系统当软路由
WAN就是这个外部网卡
LAN就是内部网卡

然后其他虚拟机的网卡全部选择内部网卡,这样就是所有虚拟机都通过软路由访问外网

简单方便直接
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 05:18 , Processed in 0.015548 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表