Windows防火墙设置动态IP白名单的一种方案

分公司需要连接本部192.168.1.2:8080的某服务, 但不希望外网其他人可以访问。
首先想到的是路由器端口映射+Windows防火墙,但是分公司的IP使用的是PPPoE,地址是动态的。而Windows防火墙只支持设置静态IP。因此想到使用在分公司上绑定域名,192.168.1.2解析该域名,并动态创建出防火墙白名单。
方案如下:

  1. 设置本部路由器的端口映射, 外网8080端口映射到192.168.1.2:8080
  2. 分公司设置花生壳域名, test.com
  3. 在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 "要修改此规则,请修改'FlushLinyiCompanyFireWallRule.ps1'脚本, 否则变更会被脚本覆盖!"
    }
    $oldIp = $IPAddress
  }
  Catch
  {
    Write-Warning "Error occured: $Error"
  }
  timeout 10
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容