Загрузка данных


$ServerIP = "192.168.10.1"
$PoolDomains = @(
    "viabtc.com", "viabtc.top", "viabtc.io",
    "binance.com", "btc.com", "poolin.com",
    "antpool.com", "f2pool.com", "emcd.io",
    "foundryusa.com", "braiins.com", "slushpool.com"
)

foreach ($Domain in $PoolDomains) {
    # Создаем первичную DNS-зону
    Add-DnsServerPrimaryZone -Name $Domain -ZoneFile "$Domain.dns" -ErrorAction SilentlyContinue
    
    # Добавляем запись для самого домена (@)
    Add-DnsServerResourceRecordA -ZoneName $Domain -Name "@" -IPv4Address $ServerIP -ErrorAction SilentlyContinue
    
    # Добавляем wildcard-запись (*.domain.com), чтобы перехватывать btc., lt., stratum., us. и любые другие поддомены
    Add-DnsServerResourceRecordA -ZoneName $Domain -Name "*" -IPv4Address $ServerIP -ErrorAction SilentlyContinue
}

Write-Host "Все зоны пулов успешно созданы и направлены на $ServerIP!" -ForegroundColor Green



$ProxyIP = "192.168.40.211"
$PoolDomains = @(
    "viabtc.com", "viabtc.top", "viabtc.io",
    "binance.com", "btc.com", "poolin.com",
    "antpool.com", "f2pool.com", "emcd.io",
    "foundryusa.com", "braiins.com", "slushpool.com"
)

foreach ($Domain in $PoolDomains) {
    # Удаляем старые записи A, если они были
    Remove-DnsServerResourceRecord -ZoneName $Domain -RRType "A" -Force -ErrorAction SilentlyContinue
    
    # Добавляем новые записи A с указанием IP вашего Stratum-прокси
    Add-DnsServerResourceRecordA -ZoneName $Domain -Name "@" -IPv4Address $ProxyIP -ErrorAction SilentlyContinue
    Add-DnsServerResourceRecordA -ZoneName $Domain -Name "*" -IPv4Address $ProxyIP -ErrorAction SilentlyContinue
}

# Очищаем кэш DNS на сервере
Clear-DnsServerCache -Force
Write-Host "Все DNS-запросы пулов теперь перенаправляются на $ProxyIP!" -ForegroundColor Green


# 1. Удаляем прошлые правила блокировки портов (если создавали)
Remove-NetFirewallRule -DisplayName "KILL-SWITCH: *" -ErrorAction SilentlyContinue

# 2. Блокируем ВСЕ внешние DNS-запросы (UDP/TCP 53) кроме обращения к самому Windows Server (192.168.10.1)
New-NetFirewallRule -DisplayName "KILL-SWITCH: Block External DNS" `
    -Direction Outbound `
    -LocalAddress "192.168.10.0/24" `
    -Protocol UDP `
    -RemotePort 53 `
    -Action Block

# 3. Разрешаем трафик к Stratum-прокси (192.168.40.211)
New-NetFirewallRule -DisplayName "ALLOW: Mining Traffic to Proxy 192.168.40.211" `
    -Direction Outbound `
    -LocalAddress "192.168.10.0/24" `
    -RemoteAddress "192.168.40.211" `
    -Action Allow

# 4. Блокируем ПРЯМОЙ исходящий Stratum-трафик в интернет на любые другие адреса
$MiningPorts = @("3333", "3334", "1800", "25", "8888", "2500", "7777", "8080")
foreach ($Port in $MiningPorts) {
    New-NetFirewallRule -DisplayName "KILL-SWITCH: Block Direct Mining Port $Port (Except Proxy)" `
        -Direction Outbound `
        -LocalAddress "192.168.10.0/24" `
        -RemoteAddress "192.168.40.211" -PolicyStore ActiveStore -InvertTarget $true `
        -Protocol TCP `
        -RemotePort $Port `
        -Action Block
}