Vấn đề
Tôi có một VPC mà tôi cần truy cập vào các máy chủ bằng FQDN riêng. Có thể truy cập VPC thông qua VPN bảo vệ dây. Máy chủ VPN cũng đóng vai trò là máy chủ DNS chạy BIND9. Tôi đã đặt máy chủ DNS với vùng riêng tư theo điều này hướng dẫn. Từ bên trong VPC, DNS hoạt động như mong đợi và tôi có thể truy cập máy chủ bằng FQDN được xác định trong vùng DNS.
Khi kết nối với VPC thông qua đường hầm VPN, tôi không thể giải quyết các FQDN đó mặc dù tôi đã thiết lập máy khách VPN để sử dụng máy chủ DNS riêng của mình. Tôi biết máy khách VPN sử dụng máy chủ DNS riêng của tôi vì khi tôi chạy nslookup google.com
Tôi thấy địa chỉ IP của DNS của mình như bạn có thể thấy kết quả bên dưới:
Máy chủ: 10.118.0.2
Địa chỉ: 10.118.0.2#53
...
Nếu tôi chạy nslookup myprivate.domain.com
từ một máy được kết nối với VPC thông qua đường hầm VPN, tôi nhận được một NXDOMAIN, điều tương tự cũng xảy ra với ping
, nó không thành công với lỗi Tên hoặc dịch vụ không xác định
. Tuy nhiên, nếu tôi chạy lệnh ping trên địa chỉ IP riêng từ VPC, nó sẽ hoạt động. Vì thế nếu myprivate.domain.com
được lưu trữ trên máy chủ tại10.118.0.3
, ping thành công trên địa chỉ IP nhưng không thành công trên FQDN.
Ngoài ra, hãy xem kết quả đào khi bên trong VPC so với khi từ một máy được kết nối qua VPN:
đào dev.myprivatedomain.com ns
:
TỪ VPC:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51703
;; cờ: qr aa rd ra; CÂU HỎI: 1, TRẢ LỜI: 1, AUTHORITY: 0, BỔ SUNG: 1
;; LỰA CHỌN PSEULiều lượng:
; EDNS: phiên bản: 0, cờ:; udp: 4096
; COOKIE: 9dccc02158dee7f70100000061a7e0a1ce2597e377b9c301 (tốt)
;; PHẦN CÂU HỎI:
;dev.myprivatedomain.com. TRONG NS
;; PHẦN THẨM QUYỀN:
nabuinternal.com. 604800 TRONG SOA ns1.myprivatedomain.com. ...
;; Thời gian truy vấn: 0 mili giây
;; MÁY CHỦ: 10.118.0.2#53(10.118.0.2)
;; KHI NÀO: Thứ Tư, ngày 01 tháng 12 20:52:49 UTC 2021
;; KÍCH THƯỚC MSG rcvd: 93
TỪ VPN:
;; Có câu trả lời:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 57158
;; cờ: qr rd ra; CÂU HỎI: 1, TRẢ LỜI: 0, AUTHORITY: 1, BỔ SUNG: 1
;; LỰA CHỌN PSEULiều lượng:
; EDNS: phiên bản: 0, cờ:; udp: 1232
;; PHẦN CÂU HỎI:
;dev.myprivatedomain.com. TRONG NS
;; PHẦN THẨM QUYỀN:
com. 900 TRONG SOA a.gtld-servers.net. nstld.verisign-grs.com. 1638392201 1800 900 604800 86400
;; Thời gian truy vấn: 44 mili giây
;; MÁY CHỦ: 10.118.0.2#53(10.118.0.2)
;; THỜI GIAN: Thứ Tư, ngày 01 tháng 12, 15:57:05 EST, 2021
;; KÍCH THƯỚC MSG rcvd: 122
Tôi nhận thấy rằng cả hai đều sử dụng cùng một máy chủ DNS, nhưng khi được yêu cầu từ VPN, quyền đối với miền riêng tư của tôi không được trả lại.
Tóm lại là, sau vài giờ nghiên cứu, tôi không thể tìm ra điều gì còn thiếu đối với các máy khách kết nối với VPC thông qua VPN để có thể phân giải các FQDN do DNS riêng của tôi xác định.
thông tin thêm
- Máy chủ là Ubuntu 20.04 LTS
- Ràng buộc 9:
BIND 9.16.1-Ubuntu (Bản phát hành ổn định)
- dây bảo vệ:
wireguard-tools v1.0.20200513
cài đặt thông qua wirespeed
- đã bật UFW
IP máy chủ VPN và DNS trong VPC là 10.118.0.2
.
Nhóm địa chỉ VPN là 10.99.0.0/16
và tôi đã đặt cấu hình BIND9 theo cách sau:
acl "đáng tin cậy" {
10.118.0.2; # máy chủ vpn và dns
...
10.99.0.0/16; # nhóm địa chỉ vpn
};
tùy chọn {
thư mục "/var/cache/bind";
nghe-on-v6 { bất kỳ; };
đệ quy có;
cho phép đệ quy { đáng tin cậy; };
nghe thử { 10.118.0.0/20; 10.99.0.0/16; };
cho phép chuyển { none; };
giao nhận {
8.8.8.8;
8.8.4.4;
};
};
Vùng được cấu hình theo cách này:
$ TTL 604800
@ TRONG SOA ns1.myprivatedomain.com. admin.myprivatedomain.com. (
9 ; nối tiếp
604800 ; Làm mới
86400 ; Thử lại
2419200 ; Hết hiệu lực
604800 ); Bộ đệm âm TTL
;
; máy chủ định danh - bản ghi NS
TRONG NS ns1.myprivatedomain.com.
; máy chủ định danh - Bản ghi A
ns1.myprivatedomain.com. TRONG 10.118.0.2
; 10.118.0.0/20 - Bản ghi A
dev.myprivatedomain.com. TRONG 10.118.0.4
staging.myprivatedomain.com. TRONG 10.118.0.3
và tệp vùng đảo ngược:
$ TTL 604800
@ TRONG SOA ns1.myprivatedomain.com. admin.myprivatedomain.com. (
7 ; nối tiếp
604800 ; Làm mới
86400 ; Thử lại
2419200 ; Hết hiệu lực
604800 ); Bộ đệm âm TTL
;
; máy chủ định danh - bản ghi NS
TRONG NS ns1.myprivatedomain.com.
; Bản ghi PTR
2.0 TRONG PTR ns1.myprivatedomain.com. ; 10.118.0.2
4.0 TRONG PTR dev.myprivatedomain.com. ; 10.118.0.4
3.0 IN PTR staging.myprivatedomain.com. ; 10.118.0.3
UFW được đặt để cho phép cổng 53 cho cả TCP và UDP.
Ngoài ra, UFW có trước các quy tắc cho phép lưu lượng truy cập từ VPN:
* tự nhiên
:POSTROUTING CHẤP NHẬN [0:0]
-A POSTROUTING -s 10.99.0.0/16 -o eth1 -j MASQUERADE
Quy tắc trước đó được thiết lập để cho phép máy khách kết nối với đường hầm VPN và sử dụng máy chủ DNS riêng. Nếu không có quy tắc này, tôi không thể truy cập internet trừ khi tôi đặt địa chỉ DNS thành địa chỉ công khai như địa chỉ của google. Tôi đã tìm thấy quy tắc này trong quá trình nghiên cứu của mình, tuy nhiên tôi vẫn chưa rành về cấu hình tường lửa và tôi chưa hiểu hết ý nghĩa của nó. Nó đã giúp tôi tiến gần hơn đến mục tiêu của mình, nhưng tôi cần đọc thêm về nó.
Dưới đây là cấu hình máy khách VPN wireguard:
[Giao diện]
...
DNS = 10.118.0.2
Địa chỉ = 10.99.0.2/16
[Ngang nhau]
...
IP được phép = 10.99.0.0/16, 10.118.0.0/20