hyper-v nat网络设置
先检查这个ip有没有在网卡上。如果ip不在网卡上,是不会报错的。
第二才是检查是不是动态范围端口,也是不会报错的这个。
使用internal ping 不通虚拟机
win/11 防火墙阻止ping icmp 。公共防火墙关掉就好了
Win11公用网络换成专用网络的技巧
powershell 列出:
Get-NetNat
Microsoft KM-TEST Loopback Adapter
添加多个ip 就行和掩码,尽量同一子网,不用填网关,
多个ip会有问题:
netsh proxy : 监听指定ip 的端口没有生效
netstat -ano 没找到有对应listen 端口
3306 没有监听成功.
原来之前我本机一直有安装mysql 所以其实loopback 一直指向本机。意味着混。
如果环路reciver=localhost,send =localhost 。所以指同一个主机。tcp ip 时failed,127.0.0.1 不一样的。docker 应该是监听了0.0.0.0,所以再会连到
1 | net stop winnat |
停止 WinNAT 服务。这时协议为 TCP 的 excludedportrange 会被自动重置为 80 - 80 等范围
再监听3306
netsh int ip delete excludedportrange protocol=tcp numberofports=1 startport=3306
One more reason not mentioned here, is that listening port may be in the excluded port range. I stumbled at this issue and spent some time to find out the reason.
这里没有提到的另一个原因是监听端口可能在排除的端口范围内。我偶然发现了这个问题,并花了一些时间找出原因。
The netsh interface portproxy add works fine, the netsh interface portproxy show all lists the added rule, but the proxy is not actually working, e.g. netstat -an | findstr <LPORT> outputs nothing.netsh interface portproxy add工作正常, netsh interface portproxy show all 列出了添加的规则,但代理实际上并未工作,例如netstat -an | findstr <LPORT>不输出任何内容。
To find out the list of the excluded ports, run netsh int ip show excludedportrange protocol=tcp. If your listening port is in the excluded port range, you then may try to un-exclude the range, or just choose another port.
要找出排除端口的列表,请运行 netsh int ip show excludedportrange protocol=tcp 。如果您的侦听端口位于排除的端口范围内,您可以尝试取消排除该范围,或者只是选择其他端口。
1 | netsh int ip show excludedportrange protocol=tcp |
So, in summary:
docker run -d -p 12345 private/container
will result in something like 127.0.0.1:72234->12345/tcp, but
docker run -d -p 123.10.12.123:12345 public/container
you can use -p IP:host_port:container_port or -p IP::port according to
Docker Documentation – 5 Jan 18
Bind container ports to the host
The information in this section explains binding container ports within the Docker default bridge. This is a bridge network named bridge created automatically when you install Docker. Note: The Docker…
netsh中没有报错
你在使用 Windows 时是否会遇到这样的问题:某个端口在 netstat -ano 中并没有显示被占用,但是即使使用管理员权限仍然无权绑定该端口?这是因为 Windows 有一些端口是被保留的,即 excludedportrange,而该问题可以通过调整 dynamicport 解决。
excludedportrange
在 PowerShell 中运行命令 netsh int ipv4 show excludedportrange protocol=tcp,你会得到类似这样的输出:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<br>协议 tcp 端口排除范围开始端口 结束端口---------- -------- 50000 50059 * 54364 54463 54664 54763 54764 54863 58922 59021 59022 59121 60791 60890* - 管理的端口排除。<br> |
|---|
ipv4可以替换为ipv6,tcp可以替换为udp。
这列出了 Windows 中被保留的端口,这些端口是不能被用户绑定的,如果尝试绑定这些端口,会得到类似这样的错误:
了端口(比如 Hyper-V?)
为什么会出现保留端口?
为什么排除一个系统的保留端口执行的是 “netsh interface ipv4 add excludeportrange …” 而不是 “netsh interface ipv4 delete excludeportrange …”?
“netsh interface ipv4 show excludedportrange protocol=tcp” 中的 “Administered port exclusions” 是啥意思?
尽量不要调整dynamic 动态端口
netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1
【转】解决 Windows 10 端口被 Hyper-V 随机保留(占用)的问题 - SpringCore - 博客园
netsh int ipv4 add excludedportrange protocol=tcp startport=1430 numberofports=1
星号代表不会被保留。没有星号代表会被保留

