DNS Server (recursive name server)
Người dùng máy tính đặc biệt ở Việt Nam đã từng biết đổi DNS để vào Facebook những ngày mạng còn "chậm".
Những con số như 8.8.8.8 (Google DNS), 208.67.222.222 (OpenDNS) hay 1.1.1.1 (Cloudflare DNS) không còn lạ gì.
Những địa chỉ IP này có chạy 1 DNS server làm nhiệm vụ trả lời IP tương ứng của các domain được hỏi.
Ví dụ facebook.com có (những) IP là gì?
$ nslookup facebook.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: facebook.com
Address: 31.13.95.36
Name: facebook.com
Address: 2a03:2880:f102:83:face:b00c:0:25de
authoritative name server vs recursive resolver
Chương trình chạy ở 8.8.8.8 sẽ tìm địa chỉ IP tương ứng với domain facebook.com như bạn đã yêu cầu. Đây là một dịch vụ "trung gian", nó sẽ đi hỏi các "root nameservers" (.com, .org...) để tìm câu trả lời, bản thân nó không có câu trả lời.Việc đi hỏi chỗ khác để lấy câu trả lời gọi là "recursive query", bởi chỗ khác cũng có thể không có câu trả lời và phải đi hỏi tiếp cấp cao hơn. Chương trình thực hiện tính năng tìm kiếm "hộ" này gọi là Recursive resolver. Khác với chương trình có câu trả lời TRỰC TIẾP cho 1 domain cụ thể - gọi là authoritative name server.
Ưu điểm của các dịch vụ này
- Tính sẵn sàng cao, ít khi bị sập (đều do những "ông lớn" internet vận hành)- Có thể nhanh hơn, ví dụ với Google DNS 8.8.8.8, khi được truy cập, một server của Google nằm gần bạn nhất sẽ trả lời. (Phía dưới số 8.8.8.8 không phải là 1 máy ở đâu đó, mà là rất nhiều máy, và nó chọn cái nào gần bạn nhất)
NHƯỢC ĐIỂM
- Privacy (sự riêng tư): mọi câu hỏi của bạn, dịch vụ DNS đều biết. Tức là bạn vào website nào, thì Google (cho 8.8.8.8), hay Cloudflare (1.1.1.1), ... đều biết cả. Nghe có vẻ không to tát, nhưng hãy nghĩ xem, chỉ cần biết các trang web bạn vào ngày hôm nay, cũng phần LỚN biết bạn đang làm gì (youtube, facebook, hay các trang web top truy cập của Việt Nam)Unbound
1 cách đơn giản để giải quyết vấn đề này là tự chạy DNS server để dùng trong mạng nhà mình (cho cả điện thoại), hay thậm chí, trên máy tính của mình.Unbound là giải pháp dễ dàng, xịn nhất ở đây.
Unbound vs BIND
Unbound ra đời sau, có kiến trúc hiện đại hơn, cấu hình đơn giản hơn, và được cho là bảo mật hơn.Cài đặt Unbound
Trên Ubuntu 18.04:
sudo apt-get update && sudo apt-get install -y unboundPhần còn lại hướng dẫn cấu hình unbound trên máy ảo OpenBSD sử dụng Vagrant.
$ whatis unbound
unbound (8) - Unbound DNS validating resolver
Unbound trên OpenDNS
(hoàn toàn tương tự có thể cài Unbound trên Ubuntu, Debian...)Unbound là DNS server mặc định trên OpenBSD, hệ điều hành bảo mật nhất trái đất (theo ai đánh giá thì tùy người đó).
Tạo OpenBSD box dùng Vagrant
mkdir openbsdvm
cd openbsdvm/
vagrant init
sed -i 's:base:generic/openbsd6:' Vagrantfile
vagrant up
#Chờ Vagrant tải OpenBSD box về máy
vagrant ssh
SSH vào máy ảo, bật unbound và hỏi unbound xem IP của pymi.vn là bao nhiêu
-bash-5.0$ uname -aKết quả unbound trả về giống hệt 8.8.8.8 của Google.
OpenBSD bazinga.localdomain 6.6 GENERIC.MP#372 amd64
-bash-5.0$ sudo -sH
bash-5.0# rcctl enable unbound
bash-5.0# rcctl start unbound
bash-5.0# ps xau | grep unbound
_unbound 32604 0.0 0.5 11408 11372 ?? I 3:36PM 0:00.04 unbound -c /var/unbound/etc/unbound.conf
root 3181 0.0 0.0 132 300 p0 R+/1 4:04PM 0:00.00 grep unbound
-bash-5.0$ nslookup tuoitre.vn 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: tuoitre.vn
Address: 222.255.239.80
-bash-5.0$ nslookup tuoitre.vn 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: tuoitre.vn
Address: 222.255.239.80
Là một máy ảo vagrant, ta có thể truy cập máy này từ máy host (máy thật), tìm địa chỉ IP của máy ảo vagrant (chú ý, có thể set IP cố định trong Vagrantfile):
bash-5.0# ifconfig | grep inetThay đổi file /var/unbound/etc/unbound.conf (đường dẫn xuất hiện trong output lệnh ps xau)
inet 127.0.0.1 netmask 0xff000000
inet 192.168.121.82 netmask 0xffffff00 broadcast 192.168.121.255
server:
interface: 0.0.0.0
#...
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: 192.168.121.0/24 allow
# ...
Thay interface từ 127.0.0.1 thành 0.0.0.0 để bên ngoài có thể truy cập (bên ngoài thực ra cũng chỉ là máy host, muốn các thiết bị trong LAN - các thiết bị dùng cùng mạng truy cập được, cần config network bridge cho máy ảo này )
Restart rồi truy cập từ máy host:
bash-5.0# rcctl restart unboundTừ máy host
unbound(ok)
unbound(ok)
$ nslookup pymi.vn 192.168.121.82
Server: 192.168.121.82
Address: 192.168.121.82#53
Non-authoritative answer:
Name: pymi.vn
Address: 104.27.128.55
Name: pymi.vn
Address: 104.27.129.55
Name: pymi.vn
Address: 2606:4700:3034::681b:8137
Name: pymi.vn
Address: 2606:4700:3036::681b:8037
Giờ có thể đổi DNS của máy host tới địa chỉ này như từng đổi thành 8.8.8.8 , rồi enjoy.
Chú ý: sẽ cần bật máy ảo mỗi khi bật máy, điều này có thể config trên backend của Vagrant (Tức Virtualbox hay KVM hay VMWare). HOẶC cài trực tiếp Unbound lên máy của bạn thay vì máy ảo, rồi set DNS server tới 127.0.0.1.
Chú ý: Unbound có sẵn tính năng caching, tức lần đầu truy cập thì chậm, nhưng từ lần 2 trở đi sẽ là ngay lập tức (chú ý query time của lần 2).
$ dig familug.org @192.168.121.82
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> familug.org @192.168.121.82
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5067
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;familug.org. IN A
;; ANSWER SECTION:
familug.org. 300 IN A 216.239.32.21
;; Query time: 251 msec
;; SERVER: 192.168.121.82#53(192.168.121.82)
;; WHEN: Mon Feb 03 23:39:20 +07 2020
;; MSG SIZE rcvd: 56
$ dig familug.org @192.168.121.82
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> familug.org @192.168.121.82
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54850
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;familug.org. IN A
;; ANSWER SECTION:
familug.org. 298 IN A 216.239.32.21
;; Query time: 0 msec
;; SERVER: 192.168.121.82#53(192.168.121.82)
;; WHEN: Mon Feb 03 23:39:22 +07 2020
;; MSG SIZE rcvd: 56
Hết.
Bài viết thực hiện trên:
$ lsb_release -d; dpkg -l vagrant | grep vagrant
Description: Ubuntu 18.04.4 LTS
ii vagrant 2.0.2+dfsg-2ubuntu8 all Tool for building and distributing virtualized development environments
HVN at https://pymi.vn and https://www.familug.org
Best Casinos in Las Vegas, NV | MapyRO
ReplyDeleteLooking for 고양 출장마사지 the 남양주 출장안마 best Casinos in Las Vegas? MapYRO® ranks all the 대전광역 출장안마 top casinos in 진주 출장샵 Las Vegas by area and revenue 목포 출장마사지 by revenue share, industry and