角色 |
ip |
系统版本 |
内核 |
软件包 |
Bind主服务器 |
192.168.8.158 |
CentOS Stream 9 |
5.14.0- 381.el9.x86_64 |
bind-9.16.23-14.el9.src.rpm |
Bind从服务器 |
192.168.8.157 |
CentOS Stream 9 |
5.14.0- 381.el9.x86_64 |
bind-9.16.23-14.el9.src.rpm |
OpenRestry反向代理服务器 |
192.168.8.159 |
CentOS Stream 9 |
5.14.0- 381.el9.x86_64 |
openresty-1.25.3.1 |
OpenRestry反向代理服务器 |
192.168.8.160 |
CentOS Stream 9 |
5.14.0- 381.el9.x86_64 |
openresty-1.25.3.1 |
首先在158和159主机上下载bind和bind-utils
yum -y install bind-utils bind
清华大学源地址
Index of /centos-stream/9-stream/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
cd /etc/yum.repos.d/
创建bak
mkdir bak
移动
mv -pv * bak/
ls -lhrt
vim base.repo
填入如下内容
[root@localhost yum.repos.d]# cat centos.repo
[baseos]
name=CentOS Stream $releasever - BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=BaseOS&infra=$infra
baseurl=https://mirrors.ustc.edu.cn/centos-stream/9-stream/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[appstream]
name=CentOS Stream $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=AppStream&infra=$infra
baseurl=https://mirrors.ustc.edu.cn/centos-stream/9-stream/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
配置完成之后
yum clean all
清除所有缓存
yum makecache
重新生成缓存
[root@dns-master190 ~]# which named-checkconf
/usr/sbin/named-checkconf
[root@dns-master190 ~]# rpm -qf `which named-checkconf`
bind-9.16.23-14.el9.x86_64
[root@rsync-158 named]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.8.158; };
//这里就是配置设置的本机127和本机ip地址的53端口
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; 192.168.8.0/24; };
//设置允许本机和8网段的地址可以解析
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "ldp.com" IN {
type master;
file "ldp.com.zone";
also-notify { 192.168.8.157 ;};
allow-transfer { 192.168.8.157 ;};
allow-update { none; };
notify yes;
//这里就是设置本机为主服务器,从服务器指向157主机,解析记录是/var/named/ldp.com.zone这个文件
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@rsync-158 named]# touch /var/named/ldp.com.zone
cat /var/named/ldp.com.zone
$TTL 7200
ldp.com. IN SOA ldp.com. 2043565830.qq.com. (
2024012312
1H
10M
1W
1D )
ldp.com. IN NS ns1.ldp.com.
ldp.com. IN NS ns2.ldp.com.
ns1.ldp.com. IN A 192.168.8.157
ns2.ldp.com. IN A 192.168.8.158
www.ldp.com. IN A 192.168.8.157
www.ldp.com. IN A 192.168.8.158
www.ldp.com. IN A 192.168.8.159
www.ldp.com. IN A 192.168.8.160
www.ldp.com. IN A 192.168.8.161
chown -R named.ldp.com.zone
[root@rsync-158 ~]# cd /var/named/
[root@rsync-158 named]# named-checkzone ldp.com ldp.com.zone
zone ldp.com/IN: loaded serial 2024012312
OK
systemctl start named
udp的53端口是提供域名解析服务的,tcp的53是提供bind服务的
将网卡文件的DNS 记录注释
之后执行nmcli c reload和nmcil c up ens160
进入配置/etc/resolv.conf文件
[root@rsync-158 named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.8.158
nameserver 192.168.8.157
指向本机和从服务器
测试
127.0.0.1
192.168.8.158
localhost
测试完成都可解析
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1;192.168.8.157; };
// 这里就是配置设置的本机127和本机ip地址的53端口
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost;192.168.8.0/24; };
//设置允许本机和8网段的地址可以解析
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "ldp.com" IN {
type slave;
file "slaves/ldp.com.zone";
masters { 192.168.8.158; };
masterfile-format text;
};
// 这里就是设定域名为ldp.com,角色为从(slave),同步的配置文件在当前路径下的slaves/ldp.com.zone
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
将网卡文件的DNS 记录注释
之后执行nmcli c reload和nmcil c up ens160
进入配置/etc/resolv.conf文件
[root@rsync-158 named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.8.158
nameserver 192.168.8.157
指向主服务器和本机
重启158和157主机的named服务之后就可以看到157主机的解析记录同步过来了。
[root@rsync-157 ~]# cat /var/named/slaves/ldp.com.zone
$ORIGIN .
$TTL 7200 ; 2 hours
ldp.com IN SOA ldp.com. 2043565830.qq.com. (
2024012312 ; serial
3600 ; refresh (1 hour)
600 ; retry (10 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.ldp.com.
NS ns2.ldp.com.
$ORIGIN ldp.com.
ns1 A 192.168.8.157
ns2 A 192.168.8.158
www A 192.168.8.157
A 192.168.8.158
A 192.168.8.159
A 192.168.8.160
A 192.168.8.161
bind配置完成
wget -c https://openresty.org/download/openresty-1.25.3.1.tar.gz
yum -y install perl-devel openssl-devel pcre-devel gcc gcc-c++ autoconf make zlib-devel
tar xf openresty-1.25.3.1.tar.gz
./configure ; echo $?
make && make install ; echo $?
[root@op-159 openresty-1.25.3.1]# cat /usr/local/openresty/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
stream {
upstream bind-ms {
server 192.168.8.158:53;
server 192.168.8.157:53;
}
server {
listen 53 udp;
proxy_pass bind-ms;
proxy_timeout 120s;
error_log logs/proxy-bind-error.log error;
}
}
[root@op-159 openresty-1.25.3.1]# /usr/local/openresty/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful
[root@op-160 openresty-1.25.3.1]# cat /usr/local/openresty/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
stream {
upstream bind-ms {
server 192.168.8.158:53;
server 192.168.8.157:53;
}
server {
listen 53 udp;
proxy_pass bind-ms;
proxy_timeout 120s;
error_log logs/proxy-bind-error.log error;
}
}
[root@op-160 openresty-1.25.3.1]# /usr/local/openresty/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful
159和160主机配置
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.8.158
nameserver 192.168.8.157
将159和160的OpenRestry重启
/usr/local/openresty/nginx/sbin/nginx -s reload
159主机测试
160主机测试
配置完成