มาลองพิจารณาบางวิธีในการบล็อกการเข้าถึงเว็บไซต์ ชื่อโดเมน URL หรือที่อยู่ IP ใน Windows โดยไม่ต้องใช้เครื่องมือของบุคคลที่สาม ในกรณีของเรา เราจะพยายามบล็อกบางเว็บไซต์โดยใช้เครื่องมือ Windows 10 ในตัวและคุณสมบัติการทำงานอัตโนมัติของ PowerShell
โดยปกติแล้ว ง่ายกว่าที่จะบล็อกเว็บไซต์บนเราเตอร์เครือข่ายของคุณ (สวิตช์หรือจุดเชื่อมต่อ Wi-Fi ที่คุณใช้เพื่อเข้าถึงอินเทอร์เน็ต) หรือใช้ซอฟต์แวร์ของบุคคลที่สาม (ตัวกรองเนื้อหา ตัวกรอง DNS ฯลฯ)
การบล็อกเว็บไซต์โดยใช้ไฟล์โฮสต์ใน Windows
วิธีที่นิยมมากที่สุดในการบล็อกเว็บไซต์เฉพาะบน Windows คือการแก้ไข โฮสต์ ไฟล์. โดยปกติแล้วจะอยู่ใน %windir%\system32\drivers\etc\ ไดเร็กทอรี. โปรดทราบว่าไฟล์โฮสต์ไม่มีนามสกุล
เส้นทางไปยังไดเรกทอรีที่มี โฮสต์ ไฟล์ถูกตั้งค่าใน DataBasePath พารามิเตอร์ภายใต้คีย์รีจิสทรี HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters . โดยค่าเริ่มต้นคือ %SystemRoot%\System32\drivers\etc
ไฟล์โฮสต์ใช้เพื่อกำหนดการจับคู่ระหว่างที่อยู่ IP และชื่อ DNS ด้วยตนเอง เมื่อแก้ไขชื่อ โฮสต์จะมีลำดับความสำคัญสูงกว่าเซิร์ฟเวอร์ DNS ที่ระบุในการตั้งค่าการเชื่อมต่อเครือข่าย
ในการบล็อกเว็บไซต์เฉพาะ (เช่น facebook.com) ให้เปิดไฟล์โฮสต์ (ด้วยสิทธิ์ของผู้ดูแลระบบ) และเพิ่มสตริงเช่นนี้:
127.0.0.1 facebook.com 127.0.0.1 www.facebook.com
บันทึกไฟล์และรีสตาร์ทคอมพิวเตอร์ของคุณ (หรือล้างแคช DNS โดยใช้คำสั่ง:ipconfig /flushdns
)
หลังจากนั้นเมื่อพยายามเปิด facebook.com ในเบราว์เซอร์ใดๆ คุณจะเห็นข้อความ “ไม่พบเพจ” / “ไม่พบเพจ”
คุณสามารถเพิ่มบรรทัดใหม่ที่มี URL ของเว็บไซต์ไปยังไฟล์โฮสต์ของคุณโดยใช้ไฟล์ .bat:
@echo off
set hostspath=%windir%\System32\drivers\etc\hosts
echo 127.0.0.1 www.facebook.com >> %hostspath%
echo 127.0.0.1 facebook.com >> %hostspath%
exit
หรือคุณสามารถใช้ฟังก์ชัน PowerShell ต่อไปนี้เพื่อบล็อกเว็บไซต์เฉพาะในไฟล์โฮสต์ของคุณโดยอัตโนมัติ
Function BlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = 'C:\Windows\System32\drivers\etc\hosts'
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If(-not $is_blocked) {
$hoststr="127.0.0.1 ” + $Url
Add-Content -Path $hosts -Value $hoststr
}
}
Function UnBlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = 'C:\Windows\System32\drivers\etc\hosts'
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If($is_blocked) {
$newhosts = Get-Content -Path $hosts |
Where-Object {
$_ -notmatch ([regex]::Escape($Url))
}
Set-Content -Path $hosts -Value $newhosts
}
}
หากต้องการเพิ่มเว็บไซต์ลงในรายการ URL ที่ถูกบล็อก เพียงดำเนินการคำสั่ง:
BlockSiteHosts ("twitter.com")
หากต้องการปลดบล็อกเว็บไซต์ ให้เรียกใช้:
UnBlockSiteHosts ("twitter.com")
บล็อกเว็บไซต์โดยใช้การกรอง DNS
หากไคลเอนต์ของคุณใช้เซิร์ฟเวอร์ DNS เดียวกัน คุณสามารถบล็อกเว็บไซต์บางแห่งได้โดยการสร้างรายการ DNS ใน DNS นั้นและระบุบางอย่างเช่น 127.0.0.1 ในนั้น อย่างไรก็ตาม ตัวกรองเนื้อหา DNS เชิงพาณิชย์ส่วนใหญ่ (OpenDNS, SafeDNS, Cisco Umbrella เป็นต้น) ใช้หลักการเดียวกัน
จะบล็อกที่อยู่ IP ของเว็บไซต์ในไฟร์วอลล์ Windows Defender ได้อย่างไร
นอกจากนี้ คุณสามารถบล็อกบางเว็บไซต์ได้โดยใช้ไฟร์วอลล์ Windows Defender ในตัว ข้อเสียเปรียบหลักของวิธีนี้คือ คุณจะไม่สามารถใช้ชื่อโดเมนหรือ URL ของเว็บไซต์ในกฎการบล็อกได้ Windows Defender Firewall ให้คุณระบุเฉพาะที่อยู่ IP หรือซับเน็ตเป็นแหล่งที่มา/ปลายทาง
อันดับแรก คุณต้องได้รับที่อยู่ IP ของเว็บไซต์ที่คุณต้องการบล็อก ทำได้ง่ายกว่าโดยใช้ nslookup คำสั่ง:
nslookup twitter.com
อย่างที่คุณเห็น คำสั่งได้ส่งคืนที่อยู่ IP หลายรายการที่กำหนดให้กับเว็บไซต์ คุณต้องบล็อกพวกเขาทั้งหมด
เรียกใช้สแน็ปอินการจัดการไฟร์วอลล์ Windows Defender (Control Panel\All Control Panel Items\Windows Defender Firewall\Advanced Settings หรือโดยการเรียกใช้ firewall.cpl )
ใน กฎขาออก ส่วน สร้างกฎใหม่ด้วยการตั้งค่าต่อไปนี้:
- ประเภทกฎ :กำหนดเอง
- โปรแกรม :โปรแกรมทั้งหมด
- ประเภทโปรโตคอล :อะไรก็ได้
- ขอบเขต :ในช่อง "กฎนี้ใช้กับที่อยู่ IP ระยะไกลใด" ส่วนเลือก "ที่อยู่ IP เหล่านี้" -> เพิ่ม ในหน้าต่างถัดไป ให้ป้อนที่อยู่ IP ซับเน็ต หรือช่วงของที่อยู่ IP ที่คุณต้องการบล็อก
คลิกตกลง -> ถัดไป -> การกระทำ -> บล็อกการเชื่อมต่อ .
ปล่อยให้ตัวเลือกทั้งหมดอยู่ในหน้าต่างที่มีโปรไฟล์ไฟร์วอลล์ที่กฎถูกนำไปใช้ จากนั้นระบุชื่อกฎและบันทึก
หลังจากนั้นไฟร์วอลล์ Windows Defender จะบล็อกการเชื่อมต่อขาออกทั้งหมดไปยังที่อยู่ IP ของเว็บไซต์ที่ระบุ ข้อความต่อไปนี้จะปรากฏในเบราว์เซอร์ของคุณเมื่อพยายามเชื่อมต่อกับไซต์ที่ถูกบล็อก:
Unable to connect
หรือ
Your Internet access is blocked Firewall or antivirus software may have blocked the connection ERR_NETWORK_ACCESS_DENIED
ในโดเมน AD ของคุณ คุณสามารถปรับใช้นโยบายไฟร์วอลล์ Windows เพื่อบล็อกการเข้าถึงเว็บไซต์บนคอมพิวเตอร์ของผู้ใช้โดยใช้ GPO อย่างไรก็ตาม มันไม่มีเหตุผล เป็นการดีกว่าที่จะกรองเว็บไซต์บนเราเตอร์การเข้าถึงอินเทอร์เน็ตของคุณ (เกตเวย์)
การใช้ PowerShell เพื่อสร้างกฎไฟร์วอลล์เพื่อบล็อกเว็บไซต์ตามชื่อโดเมนหรือที่อยู่ IP
คุณยังสามารถสร้างกฎไฟร์วอลล์ที่บล็อกการเชื่อมต่อกับเว็บไซต์โดยใช้ PowerShell:
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress 104.244.42.129, 104.244.42.0/24
สตริง “กฎถูกแยกวิเคราะห์สำเร็จจากร้านค้า” หมายความว่ามีการใช้กฎไฟร์วอลล์ใหม่สำเร็จแล้ว คุณสามารถค้นหาได้ในอินเทอร์เฟซแบบกราฟิกของไฟร์วอลล์ Windows Defender
เพื่อไม่ให้แก้ไขชื่อเว็บไซต์เป็นที่อยู่ IP ด้วยตนเอง คุณสามารถใช้ Resolve-DnsName PowerShell cmdlet เพื่อรับที่อยู่ IP ของเว็บไซต์:
Resolve-DnsName "twitter.com"| Select-Object -ExpandProperty IPAddress
ดังนั้น คุณสามารถแปลงชื่อเว็บไซต์เป็นที่อยู่ IP และเพิ่มกฎการบล็อกในการตั้งค่าไฟร์วอลล์:
$IPAddress = Resolve-DnsName "twitter.com"| Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress
คุณจึงเพิ่มกฎการบล็อกให้กับ Windows Firewall สำหรับหลายเว็บไซต์พร้อมกันได้:
$SitesToBlock = "facebook.com","instagram.com","youtube.com"
$IPAddress = $SitesToBlock | Resolve-DnsName -NoHostsFile | Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Web Sites" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress
ฉันได้เพิ่ม –NoHostsFile พารามิเตอร์ไปยัง cmdlet ของ Resolve-DnsName เพื่อไม่ให้ใช้ไฟล์โฮสต์ในการแก้ไข
ตรวจสอบให้แน่ใจว่ากฎการบล็อกขาออกปรากฏในคอนโซล Windows Firewall
บทความนี้ส่วนใหญ่เป็นแบบฝึกหัดฝึกสมอง ในเครือข่ายองค์กร คุณต้องใช้การกรองเว็บไซต์บนเกตเวย์การเข้าถึงอินเทอร์เน็ต เราเตอร์หรือพร็อกซีเซิร์ฟเวอร์ การบล็อกระดับโฮสต์ไม่มีประสิทธิภาพมาก