使用场景:
要在公司访问子公司内部内网服务器指定服务。公司和子公司的外网ip都是动态的。
解决方法:
1.公司申请公网ip(动态ip),路由映射指定服务到内网ip,访问就是 动态ip+外网端口 如:192.168.10.1:9988(转发 内网:192.168.0.22:8899)
2.子公司使用动态域名解析(第三方的很多 如花生壳 之类 星辰域名管理 或者自己搭建都可以)
3.内网服务器 防火墙使用PowerShell 编写
$host.ui.RawUI.WindowTitle="子公司ip并加入防火墙白名单" $SitesToBlock = "xmspace.net" $RuleName = "允许访问" $oldIp = "" cls while (1) { Try { echo "Parse domain $SitesToBlock 's ip" $IPAddress = $SitesToBlock | Resolve-DnsName -NoHostsFile | Select-Object -ExpandProperty IPAddress echo "Domain $SitesToBlock 's ip is: $IPAddress" if ($IPAddress -ne $oldIp) { echo "Refresh firewall rule" Remove-NetFirewallRule -DisplayName "$RuleName" -ErrorAction Ignore New-NetFirewallRule -DisplayName "$RuleName" -Direction Inbound -LocalPort "8899" -Protocol TCP -Action Allow -RemoteAddress "$IPAddress,192.168.1.0/24" -Description "防火墙规则" } $oldIp = $IPAddress } Catch { Write-Warning "Error occured: $Error" } timeout 10 }
原理说明:
子公司使用动态域名解析域名xmspace.net,然后内网服务器使用powershell的 dns解析功能 解析出子公司动态域名当前ip,把之前的“允许访问”防火墙规则删除后,重新建立一条最新动态ip的防火墙规则。方法虽然比较绕,但是很好用