มีวิธีใช้ DNS เฉพาะสำหรับโดเมนเฉพาะหรือไม่


29

ที่ทำงานเราใช้ OpenDNS และบล็อก irc.freenode.net เพื่อหามัลแวร์อย่างผิด ๆ ฉันจะแน่ใจได้อย่างไรว่าคำขอใด ๆ สำหรับ * .freenode.net ไปที่ 8.8.8.8 และ 8.8.4.4 (DNS ของ Google)

ฉันพยายามทำสิ่งนี้โดยเล่นซอกับ resolv.conf บน Ubuntu แต่ฉันไม่สามารถไปไกลได้ นอกจากนี้ยังมีวิธีที่ง่ายในการทำเช่นนี้สำหรับระบบ Mac และ Windows (ฉันมีเพื่อนร่วมงานไม่กี่คนที่ใช้ระบบปฏิบัติการเหล่านั้นและพวกเขาต้องการใช้ IRC ด้วย)


4
ระวัง - การพยายามควบคุมระบบรักษาความปลอดภัยอาจทำให้ บริษัท หนึ่งแห่งถูกพาออกไป นอกจากนี้ยังเป็นไปได้ว่าเซิร์ฟเวอร์ DNS อื่นถูกบล็อก
uSlackr

คำตอบ:


14

ลินุกซ์ไม่สนับสนุนการใช้เซิร์ฟเวอร์ DNS resolv.confของโดเมนเฉพาะผ่านทาง คุณสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการเรียกใช้แคชเนมเซิร์ฟเวอร์ (เช่นBINDหรือdnsmasq) ในเครื่องแล้วกำหนดค่าตัวส่งต่อที่ชัดเจนสำหรับแต่ละโดเมน

ภายใต้ OS X การตั้งค่าประเภทนี้ค่อนข้างง่ายโดยใช้scutilคำสั่ง กรณีการใช้งานทั่วไปสำหรับการกำหนดค่านี้คือการส่งต่อคำขอ DNS สำหรับการเชื่อมต่อ VPN ไปยังเซิร์ฟเวอร์ DNS ที่ระบุเฉพาะ VPN ดังนั้นคุณจะพบสิ่งนี้บ่อยครั้งในคอนเสิร์ตด้วยเช่น OpenVPN เอกสารนี้พูดเกี่ยวกับscutilคำสั่งเช่นนี้และ Google ค้นหาopenvpnและscutilจะให้ผลลัพธ์มากขึ้น

ฉันไม่แน่ใจเกี่ยวกับ Windows คุณอาจใช้โซลูชันเซิร์ฟเวอร์ DNS ในตัวสำหรับแพลตฟอร์มทั้งสามถ้าคุณต้องการ


1
สิ่งนี้ยังคงเป็นจริงในsystemd-resolvedโลกหรือไม่? (ใช่ฉันรู้คำตอบของคุณอายุ 7 ปี)
Pointy

34

สิ่งนี้ไม่สามารถทำได้ด้วยการแก้ไข DNS มาตรฐานโดย * nix (และ Windows AFAIK) คุณต้องใช้เซิร์ฟเวอร์ DNS ของคุณเองเพื่อดำเนินการนี้ บน * nix dnsmasqเป็นตัวเลือกที่ดีที่สุดสำหรับสิ่งนี้และคุณสามารถรันสิ่งนี้ได้ในทุกเวิร์กสเตชันหรือรันบนเซิร์ฟเวอร์และกำหนดค่าเวิร์กสเตชันทั้งหมดเพื่อใช้สิ่งนี้

/etc/resolv.conf:

nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220

/etc/dnsmasq.conf:

server=/freenode.net/8.8.8.8
server=/freenode.net/8.8.4.4

2
สิ่งนี้สามารถทำได้โดยใช้การแก้ไข DNS มาตรฐานที่ได้รับจากระบบปฏิบัติการบางระบบ ไม่ใช่แค่โดย Linux
ลาร์สก์

ในการควบคุมอินเทอร์เฟซที่จะใช้ฉันเพิ่ม@vpn0 ส่วนท้ายของเซิร์ฟเวอร์ DNS สิ่งนี้มีประโยชน์ในการใช้งานเฉพาะเมื่อ VPN ทำงาน
อเล็กซ์

8

ใน OS X คุณสามารถใช้ไฟล์เช่น /etc/resolver/example.com พร้อมเนื้อหา:

nameserver 172.16.5.5

เพื่อส่งต่อคำขอ DNS สำหรับ * .example.com ไปยัง 172.16.5.5

http://hints.macworld.com/article.php?story=2004062902195410


สิ่งนี้ใช้กับ High Sierra หรือไม่?
Tolsadus

1
มันยังใช้งานได้ในโมฮาวี
byte255

5

ฉันทำสิ่งนี้กับ Fedora โดยติดตั้งเซิร์ฟเวอร์ DNS ในเครื่อง

ติดตั้งครั้งแรกผูก:

sudo dnf install bind

ขั้นตอนที่ 1: ต่อท้ายบรรทัดเพื่อ/etc/named.conf(เป็นรูท):

include "/etc/named/freenode.net.conf";

ขั้นตอนที่ 2: สร้างไฟล์โซน/etc/named/freenode.net.conf(เป็น root):

zone "freenode.net" {
    type forward;
    forwarders { 8.8.8.8; };
};

ตอนนี้รีสตาร์ทชื่อ:

sudo service named restart

ตอนนี้กำหนดค่าการตั้งค่า LAN ของคุณใหม่ให้ใช้ 127.0.0.1 เป็นเซิร์ฟเวอร์ DNS แทนที่จะเป็นโฮสต์ที่ปันส่วน DCHP


3

มันเป็นไปได้ที่จะใช้firejailตัวเลือก --dns สำหรับเรื่องนี้ ตัวอย่างเช่น:

firejail --dns=8.8.8.8 firefox

วิธีนี้เซิร์ฟเวอร์ DNS สามารถตั้งค่าต่อแอปพลิเคชันแทนต่อโดเมน ดังนั้นมันอาจเป็นทางออกที่ดีกว่าในบางสถานการณ์


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.