Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. (Get-Content -Raw 'dns_rules.json' | ConvertFrom-Json) | % {
  2. $queries = @()
  3. try {
  4. foreach ($hostname in $_.hostnames | Sort-Object -Unique) {
  5. $queries += Resolve-DnsName -Name $hostname -ErrorVariable +err
  6. }
  7. } catch {
  8. return
  9. }
  10. $rule = Get-NetFirewallRule -Name $_.rule
  11. if ( $rule.Description ) {
  12. Remove-NetRoute -DestinationPrefix ($rule.Description | ConvertFrom-Json) `
  13. -Confirm:$false `
  14. -ErrorAction SilentlyContinue
  15. $rule.Description = ''
  16. $rule | Set-NetFirewallRule
  17. }
  18. $rule | Get-NetFirewallAddressFilter `
  19. | Set-NetFirewallAddressFilter -RemoteAddress $queries.IPAddress
  20. if ( $_.route ) {
  21. $ipconfig = Get-NetIPConfiguration -InterfaceAlias $_.route.interface
  22. $tag = @()
  23. foreach ( $query in $queries ) {
  24. if ( $query.Type -eq 'AAAA' ) {
  25. $dest = "$($query.IPAddress)/128"
  26. $nexthop = $ipconfig.IPv6DefaultGateway.NextHop
  27. } else {
  28. $dest = "$($query.IPAddress)/32"
  29. $nexthop = $ipconfig.IPv4DefaultGateway.NextHop
  30. }
  31. $tag += $dest
  32. New-NetRoute -DestinationPrefix $dest `
  33. -InterfaceIndex $ipconfig.InterfaceIndex `
  34. -NextHop $nexthop `
  35. -PolicyStore ActiveStore `
  36. -RouteMetric 0 `
  37. -ErrorAction SilentlyContinue
  38. }
  39. $rule.Description = $tag | ConvertTo-Json -Compress
  40. $rule | Set-NetFirewallRule
  41. }
  42. }
  43. if ( $err ) {
  44. $err | Out-File 'dns_rules.log' -Append
  45. exit 1
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement