NA-HW2-BIND9-自建DNS服務

NA-hw2 BIND9

架構:

router

os: ubuntu: 20.04
username: router
passwd: 000000

interfaces:

  1. enp0s3: NAT
  2. enp0s8: Intranet
  3. enp0s9: Host-Only(only for ssh)

DNS-Server

os: centOS 8.3
username: cychen
passwd: ——

interfaces:

  1. enp0s3: Intranet(Through router) DHCP
  2. enp0s8: Host-Only(only for ssh) 192.168.58.2

BIND

基本設定

SSHFP

How to generate sshfp remotely

DNSSEC

1
2
$ dnssec-keygen -r /dev/urandom -f KSK -a RSASHA256 -b 2048 -n ZONE 40.nasa
$ dnssec-keygen -r /dev/urandom -a RSASHA256 -b 1024 -n ZONE 40.nasa

第一條指令會生出長度為 2048 的 KSK,第二條指令會生出長度為 1024 的 ZSK。
產生出四個檔案

1
2
$ ls
K40.nasa.+008+05846.key K40.nasa.+008+05846.private K40.nasa.+008+37968.key K40.nasa.+008+37968.private

這裡的 K40.nasa.+008+05846.key 是 KSK,而 37968.key 是 ZSK,這個是有寫在檔案裡面的,所以如果分不出來就打開它。

接下來我們就可以 sign 我們的 zonefile 了。

過程:

1
2
3
$ cat K40.nasa.+008+05846.key >> zonefile.db
$ cat K40.nasa.+008+37968.key >> zonefile.db
$ dnssec-signzone -u -o 40.nasa -k /etc/named/DNSKEY/K40.nasa.+008+05846.key zonefile.db /etc/named/DNSKEY/K40.nasa.+008+37968.key;

然後會產生 zonefile.db.signed,而我們只要在 named.conf 裡面指定 zonefile 為這個 .signed 檔案就算是簽證完了。

然後還要在 named.conf 裡面啟用 dnssec:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

options {
...
dnssec-enable yes;
dnssec-lookaside no;
dnssec-validation autp;
}

view "VIEW3"{
match-clients { any; };

zone "40.nasa." IN {
type master;
file "zonefile.db.signed";
notify yes;
};
};

最後需要生出 DS record:

1
$ dnssec-dsfromkey   K40.nasa.+008+05846.key

View 在 Slave 機上的設定

:::warning
其實 Zone transfer 本質上也是和使用者與 DNS server 要資料一樣,只是要的方式是要整個 zonefile。所以 DNS server 在設定 match-client 的時候同樣也會影響到 Slave 機器的 transfer。
:::
所以其實 Master 機器沒辦法辨別 Slave 機到底要的是在哪一個 View 下的 zonefile,所以你必須要為 Slave 機設很多個 IP,然後用不同的 IP 分別去和 Master 要資料,設定檔的邏輯大概如下:

Master:

1
2
3
4
5
6
7
8
9
view1{
match-clients {ip1; !ip2; !ip3; ...; subnet1;};
}

view2{
match-clients {!ip1; ip2; !ip3; ...; subnet2;};
}

...

Slave:

1
2
3
4
5
6
7
8
9
10
11
view1{
masters: {master_ip;};
transfer-source: ip1;
}

view2{
masters: {master_ip;};
transfer-source: ip2;
}

...

至於要怎麼在同一台機器分配很多 ip,可以開很多張網卡,或是在同一張網卡上綁多個 ip,可以用 nmtui 簡單設定:

或是去修改 /etc/sysconfig/network-scripts 裡面的設定。

Debug 資料

centOS 添加網卡後必須要自己寫網卡設定檔

如果啟用了 SNAT 功能,所有外來 IP 都會變成 Router 的 IP,會拿不到 VIEW 的分數

centOS 在用 Haproxy 的時候會被 SELINUX 擋住,Server 會無法啟用(他會說 workers exited)