使用场景:
要在公司访问子公司内部内网服务器指定服务。公司和子公司的外网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的防火墙规则。方法虽然比较绕,但是很好用
