分公司需要連接本部192.168.1.2:8080的某服務, 但不希望外網(wǎng)其他人可以訪問。
首先想到的是路由器端口映射+Windows防火墻辖源,但是分公司的IP使用的是PPPoE,地址是動態(tài)的儒洛。而Windows防火墻只支持設置靜態(tài)IP精耐。因此想到使用在分公司上綁定域名,192.168.1.2解析該域名琅锻,并動態(tài)創(chuàng)建出防火墻白名單卦停。
方案如下:
- 設置本部路由器的端口映射, 外網(wǎng)8080端口映射到192.168.1.2:8080
- 分公司設置花生殼域名, test.com
- 在192.168.1.2上編寫如下PowerShell腳本,并設置為開機自啟動
$host.ui.RawUI.WindowTitle="刷新分公司的ip并加入防火墻白名單"
$SitesToBlock = "test.com"
$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 "3000" -Protocol TCP -Action Allow -RemoteAddress "$IPAddress,192.168.1.0/24" -Description "要修改此規(guī)則,請修改'FlushLinyiCompanyFireWallRule.ps1'腳本, 否則變更會被腳本覆蓋!"
}
$oldIp = $IPAddress
}
Catch
{
Write-Warning "Error occured: $Error"
}
timeout 10
}