ปัญหา
ฉันมี VPC ที่ฉันต้องการเข้าถึงเซิร์ฟเวอร์โดยใช้ FQDN ส่วนตัว VPC สามารถเข้าถึงได้ผ่าน wireguard VPN เซิร์ฟเวอร์ VPN ยังทำหน้าที่เป็นเซิร์ฟเวอร์ DNS ที่ใช้งาน BIND9 ฉันได้ตั้งค่าเซิร์ฟเวอร์ DNS ด้วยโซนส่วนตัวตามนี้ กวดวิชา. จากภายใน VPC DNS ทำงานตามที่คาดไว้ และฉันสามารถเข้าถึงเซิร์ฟเวอร์โดย FQDN ที่กำหนดไว้ในโซน DNS
เมื่อเชื่อมต่อกับ VPC ผ่านอุโมงค์ VPN ฉันไม่สามารถแก้ไข FQDN เหล่านั้นได้ แม้ว่าฉันจะตั้งค่าไคลเอนต์ VPN ให้ใช้เซิร์ฟเวอร์ DNS ส่วนตัวของฉันแล้วก็ตาม ฉันรู้ว่าไคลเอนต์ VPN ใช้เซิร์ฟเวอร์ DNS ส่วนตัวของฉันเพราะเมื่อฉันเรียกใช้ nslookup google.com
ฉันเห็นที่อยู่ IP ของ DNS ตามที่คุณเห็นผลลัพธ์ด้านล่าง:
เซิร์ฟเวอร์: 10.118.0.2
ที่อยู่: 10.118.0.2#53
...
ถ้าฉันเรียกใช้ nslookup myprivate.domain.com
จากเครื่องที่เชื่อมต่อกับ VPC ผ่านอุโมงค์ VPN ฉันได้รับ NXDOMAIN เช่นเดียวกับ ปิง
มันล้มเหลวด้วยข้อผิดพลาด ไม่ทราบชื่อหรือบริการ
. อย่างไรก็ตาม ถ้าฉันรัน ping บนที่อยู่ IP ส่วนตัวจาก VPC มันก็ใช้ได้ ดังนั้นหาก myprivate.domain.com
โฮสต์บนเซิร์ฟเวอร์ที่10.118.0.3
การ ping สำเร็จบนที่อยู่ IP แต่ล้มเหลวใน FQDN
นอกจากนี้ ดูผลการขุดเมื่ออยู่ใน VPC เทียบกับเมื่อมาจากเครื่องที่เชื่อมต่อผ่าน VPN:
ขุด dev.myprivatedomain.com ns
:
จาก VPC:
;; ->>HEADER<<- opcode: QUERY, สถานะ: NOERROR, id: 51703
;; ธง: qr aa rd ra; คำถาม: 1, คำตอบ: 1, ผู้มีอำนาจ: 0, เพิ่มเติม: 1
;; เลือก PSEUDOSECTION:
; EDNS: เวอร์ชัน: 0, แฟล็ก:; UDP: 4096
; คุกกี้: 9dccc02158dee7f70100000061a7e0a1ce2597e377b9c301 (ดี)
;; ส่วนคำถาม:
;dev.myprivatedomain.com ใน NS
;; ส่วนผู้มีอำนาจ:
nabuinternal.com. 604800 ใน SOA ns1.myprivatedomain.com ...
;; เวลาสืบค้น: 0 มิลลิวินาที
;; เซิร์ฟเวอร์: 10.118.0.2#53(10.118.0.2)
;; เมื่อ: วันพุธที่ 01 ธันวาคม 20:52:49 UTC 2021
;; ขนาดผงชูรส rcvd: 93
จาก VPN:
;; ได้รับคำตอบ:
;; ->>HEADER<<- opcode: QUERY, สถานะ: NXDOMAIN, id: 57158
;; ธง: qr rd ra; คำถาม: 1, คำตอบ: 0, ผู้มีอำนาจ: 1, เพิ่มเติม: 1
;; เลือก PSEUDOSECTION:
; EDNS: เวอร์ชัน: 0, แฟล็ก:; UDP: 1232
;; ส่วนคำถาม:
;dev.myprivatedomain.com ใน NS
;; ส่วนผู้มีอำนาจ:
คอม 900 ใน SOA a.gtld-servers.net nstld.verisign-grs.com. 1638392201 1800 900 604800 86400
;; เวลาสืบค้น: 44 มิลลิวินาที
;; เซิร์ฟเวอร์: 10.118.0.2#53(10.118.0.2)
;; เมื่อ: วันพุธที่ 01 ธันวาคม 15:57:05 EST 2021
;; ขนาดผงชูรส rcvd: 122
ฉันสังเกตเห็นว่าทั้งคู่ใช้เซิร์ฟเวอร์ DNS เดียวกัน แต่เมื่อได้รับการร้องขอจาก VPN สิทธิ์สำหรับโดเมนส่วนตัวของฉันจะไม่ถูกส่งกลับ
สรุปแล้วหลังจากการค้นคว้าเป็นเวลาหลายชั่วโมง ฉันก็พบสิ่งที่ขาดหายไปสำหรับไคลเอนต์ที่เชื่อมต่อกับ VPC ผ่าน VPN เพื่อให้สามารถแก้ไข FQDN ที่กำหนดโดย DNS ส่วนตัวของฉัน
ข้อมูลเพิ่มเติม
- เซิร์ฟเวอร์เป็น Ubuntu 20.04 LTS
- ผูก 9:
BIND 9.16.1-Ubuntu (รุ่นเสถียร)
- ไวร์การ์ด:
เครื่องมือดักฟัง v1.0.20200513
ติดตั้งผ่าน wirespeed
- เปิดใช้งาน UFW
IP ของเซิร์ฟเวอร์ VPN และ DNS ใน VPC คือ 10.118.0.2
.
กลุ่มที่อยู่ VPN คือ 10.99.0.0/16
และฉันได้ตั้งค่าคอนฟิกูเรชัน BIND9 ในลักษณะต่อไปนี้:
acl "เชื่อถือได้" {
10.118.0.2; # เซิร์ฟเวอร์ VPN และ DNS
...
10.99.0.0/16; # กลุ่มที่อยู่ vpn
};
ตัวเลือก {
ไดเร็กทอรี "/var/cache/bind";
ฟังบน v6 { ใด ๆ ; };
การเรียกซ้ำ ใช่;
อนุญาตการเรียกซ้ำ { เชื่อถือได้; };
ฟังบน { 10.118.0.0/20; 10.99.0.0/16; };
อนุญาตให้โอน { ไม่มี; };
ผู้ส่งต่อ {
8.8.8.8;
8.8.4.4;
};
};
โซนถูกกำหนดค่าด้วยวิธีนี้:
$TTL 604800
@ IN SOA ns1.myprivatedomain.com. admin.myprivatedomain.com. (
9 ; อนุกรม
604800 ; รีเฟรช
86400 ; ลองอีกครั้ง
2419200 ; หมดอายุ
604800 ) ; TTL แคชเชิงลบ
;
; เนมเซิร์ฟเวอร์ - บันทึก NS
ใน NS ns1.myprivatedomain.com
; เซิร์ฟเวอร์ชื่อ - ระเบียน
ns1.myprivatedomain.com. ใน 10.118.0.2
; 10.118.0.0/20 - บันทึก
dev.myprivatedomain.com ใน 10.118.0.4
staging.myprivatedomain.com ใน 10.118.0.3
และไฟล์โซนย้อนกลับ:
$TTL 604800
@ IN SOA ns1.myprivatedomain.com. admin.myprivatedomain.com. (
7 ; อนุกรม
604800 ; รีเฟรช
86400 ; ลองอีกครั้ง
2419200 ; หมดอายุ
604800 ) ; TTL แคชเชิงลบ
;
; เนมเซิร์ฟเวอร์ - บันทึก NS
ใน NS ns1.myprivatedomain.com
; พี.ที.อาร์.เรคคอร์ด
2.0 ใน PTR ns1.myprivatedomain.com ; 10.118.0.2
4.0 ใน PTR dev.myprivatedomain.com ; 10.118.0.4
3.0 ใน PTR staging.myprivatedomain.com ; 10.118.0.3
UFW ถูกตั้งค่าให้อนุญาตพอร์ต 53 สำหรับทั้ง TCP และ UDP
นอกจากนี้ UFW มีกฎก่อนหน้าที่จะอนุญาตการรับส่งข้อมูลจาก VPN:
*แนท
:หลังยอมรับ [0:0]
-A โพสต์ -s 10.99.0.0/16 -o eth1 -j MASQUERADE
กฎก่อนหน้านี้ได้รับการตั้งค่าเพื่อให้ไคลเอ็นต์เชื่อมต่อกับอุโมงค์ VPN และใช้เซิร์ฟเวอร์ DNS ส่วนตัวได้ หากไม่มีกฎนี้ ฉันไม่สามารถเข้าถึงอินเทอร์เน็ตได้เว้นแต่ฉันจะตั้งค่าที่อยู่ DNS เป็นที่อยู่สาธารณะเหมือนกับที่อยู่ของ Google ฉันพบกฎนี้ระหว่างการวิจัยของฉัน แต่ฉันยังไม่คุ้นเคยกับการกำหนดค่าไฟร์วอลล์มากนัก และฉันก็ไม่เข้าใจความหมายของกฎนี้อย่างถ่องแท้ มันช่วยให้ฉันเข้าใกล้เป้าหมายมากขึ้น แต่ฉันต้องอ่านเพิ่มเติม
ด้านล่างนี้คือการกำหนดค่าไคลเอนต์ wireguard VPN:
[อินเตอร์เฟซ]
...
DNS = 10.118.0.2
ที่อยู่ = 10.99.0.2/16
[เพียร์]
...
IP ที่อนุญาต = 10.99.0.0/16, 10.118.0.0/20