- 实现DNS子域授权
- 基于acl实现智能DNS
- 总结防火墙分类
- 总结iptable 5表5链, 基本使用,扩展模块。
- 总结iptables规则优化实践,规则保存和恢复。
- 总结NAT转换原理, DNAT/SDNAT原理,并自行设计架构实现DNAT/SNAT。
- 使用REDIRECT将90端口重定向80,并可以访问到80端口的服务
- firewalld常见区域总结。
- 通过ntftable来实现暴露本机80/443/ssh服务端口给指定网络访问
DNS
实现DNS自解析
10.0.0.155 DNS服务器
10.0.0.150 client -nameserver:10.0.0.155
10.0.0.156 web
DNS
cat named.conf.default-zones
zone "linux-magedu.com" {
type master;
file "/etc/bind/db.linux-magedu.com";
};
root@ubuntu2:/etc/bind# cat /etc/bind/db.linux-magedu.com
linux-magedu.com. 86400 IN SOA mage-dns. admin.linux-magedu.com. ( 123 3H 15M 1D 1W )
linux-magedu.com. 86400 IN NS dns1.linux-magedu.com.
dns1.linux-magedu.com. 86400 IN A 10.0.0.155
www.linux-magedu.com. 86400 IN A 10.0.0.56
w.linux-magedu.com. 86400 IN A 1.2.3.4
#语法检查
root@ubuntu2:/etc/bind# named-checkzone linux-magedu.com /etc/bind/db.linux-magedu.com
zone linux-magedu.com/IN: loaded serial 123
OK
root@ubuntu2:/etc/bind# rndc reload
server reload successful
root@ubuntu2:/etc/bind# dig www.linux-magedu.com
; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> www.linux-magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48642
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 3d108db02fc9047f0100000065f97e678cd7aa180ae5bab4 (good)
;; QUESTION SECTION:
;www.linux-magedu.com. IN A
;; ANSWER SECTION:
www.linux-magedu.com. 86400 IN A 10.0.0.156
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Tue Mar 19 12:00:39 UTC 2024
;; MSG SIZE rcvd: 93
client
web服务器 156
echo "<h1>this is linux-magedu.com</h1>" >> /var/www/html/index.html
dns主机验证
root@ubuntu2:/etc/bind# curl 10.0.0.156
<h1>this is linux-magedu.com</h1>
client验证
[root@rocky_8 ~]# curl 10.0.0.156
<h1>this is linux-magedu.com</h1>
DNS主从同步
环境配置
10.0.0.155 DNS master
10.0.0.151 DNS slave
10.0.0.150 client
10.0.0.156 web-nginx
10.0.0.152 mysql
DNSslave主机
#安装bind
apt update;apt install -y bind9
#取消ubuntu自带的systemd-resolved
systemctl stop systemd-resolved.service
#修改软链接文件指向,保证永久生效
rm -f /etc/resolv.conf
ln -sv /run/systemd/resolve/resolv.conf /etc/resolv.conf
slave的vim /etc/resolv.conf
nameserver 127.0.0.1
root@ubuntu2204:~# mkdir /etc/bind/slaves
root@ubuntu2204:~# chmod g=rwx /etc/bind/slaves
root@ubuntu2204:~# vim /etc/apparmor.d/usr.sbin.named
#在第19行后新增如下两行
[root@ubuntu ~]# vim /etc/apparmor.d/usr.sbin.named
/etc/bind/slaves/** rwk,
/etc/bind/slaves/ rwk,
root@ubuntu2204:~# systemctl restart apparmor.service
#新增主从同步配置
[root@ubuntu ~]# vim /etc/bind/named.conf.default-zones
zone "linux-magedu.com" IN {
type slave;
masters {10.0.0.155;};
file "/etc/bind/slaves/db.linux-magedu.com";
};
#将ipv6监听取消
root@ubuntu2204:/etc/bind# vi named.conf.options
root@ubuntu2204:/etc/bind# systemctl restart named
root@ubuntu2204:/etc/bind# ss -unlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 10.0.0.151:53 0.0.0.0:* users:(("named",pid=41598,fd=32))
UNCONN 0 0 10.0.0.151:53 0.0.0.0:* users:(("named",pid=41598,fd=33))
UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=41598,fd=26))
UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("named",pid=41598,fd=27))
UNCONN 0 0 0.0.0.0:52594 0.0.0.0:* users:(("rsyslogd",pid=39091,fd=7))
#解析文件同步过来了
root@ubuntu2204:/etc/bind# ls /etc/bind/slaves/
db.linux-magedu.com
master
#新增dns2
root@ubuntu2:/etc/bind# cat db.linux-magedu.com
linux-magedu.com. 86400 IN SOA mage-dns. admin.linux-mage.com ( 124 3H 15M 1D 1W )
linux-magedu.com. 886400 IN NS dns1.linux-magedu.com.
linux-magedu.com. 886400 IN NS dns2.linux-magedu.com.
dns1.linux-magedu.com. 86400 IN A 10.0.0.155
dns2.linux-magedu.com. 86400 IN A 10.0.0.151
www.linux-magedu.com. 86400 IN A 10.0.0.156
w.linux-magedu.com. 86400 IN A 1.2.3.4
root@ubuntu2:/etc/bind# ll db.linux-magedu.com
-rw-r--r-- 1 root bind 399 Mar 19 20:23 db.linux-magedu.com
root@ubuntu2:/etc/bind# rndc reload
server reload successful
client db文件同步过来了
root@ubuntu2204:/etc/bind/slaves# ll
total 12
drwxrwsr-x 2 root bind 4096 Mar 19 20:18 ./
drwxr-sr-x 3 root bind 4096 Mar 19 20:17 ../
-rw-r--r-- 1 bind bind 339 Mar 19 20:18 db.linux-magedu.com
root@ubuntu2204:/etc/bind/slaves# ll
total 12
drwxrwsr-x 2 root bind 4096 Mar 19 20:25 ./
drwxr-sr-x 3 root bind 4096 Mar 19 20:17 ../
-rw-r--r-- 1 bind bind 413 Mar 19 20:25 db.linux-magedu.com
client
[root@rocky_8 ~]# nslookup www.linux-magedu.com
Server: 10.0.0.155
Address: 10.0.0.155#53
Name: www.linux-magedu.com
Address: 10.0.0.156
#DNS-master 停掉服务
root@ubuntu2:/etc/bind# systemctl stop named
[root@rocky_8 ~]# nslookup www.linux-magedu.com
Server: 10.0.0.151
Address: 10.0.0.151#53
Name: www.linux-magedu.com
Address: 10.0.0.156
iptables
iptables 的表、链结构
5种规则链
(1)INPUT:处理入站数据包
(2)OUTPUT:处理出站数据包
(3)FORWARD:处理转发数据包
(4)POSTROUTING链:在进行路由选择后处理数据包
(5)PREROUTING链:在进行路由选择前处理数据包
4个规则表
(1)raw表:确定是否对该数据包进行状态跟踪
(2)mangle表:为数据包设置标记
(3)nat表:修改数据包中的源、目标IP地址或端口
(4)filter表:确定是否放行该数据包(过滤)
规则链之间的顺序
(1)入站: PREROUTING——INPUT
(2)出站: OUTPUT——POSTROUTING
(3)转发: PREROUTING——FORWARD——POSTROUTING
转换
(1)nat PREROUTING:目的地址转换。要把别人的公网ip换成你们内部的ip
(2)nat POSTROUTING:源地址转换,要把你的内网地址转换成公网地址才能上网,一般用于对外发布内网的服务(内网访问外网)
防火墙规则
添加、查看、删除规则
#查看默认规则:
iptables -nL
#指定表查看:
iptables -t filter -vnL
#查看指定表中的指定链
iptables -t filter -vnL INPUT ------不指定表,默认就是filter
添加规则的两个常用选项:
-A,在末尾追加规则。
-I,在指定位置前插入规则。如果不指定,则在首行插入
添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。
匹配到了就不在匹配后面的规则
#清空规则 ----如果不写表名和链名,默认清空filter表中所有链里的所有规则
iptables -F
#禁止所有主机ping本机
iptables -t filter -A INPUT -p icmp -j REJECT
#允许ping通,-A在前一条规则后添加
iptables -t filter -A INPUT -p icmp -j ACCEPT
#指定序号插入,插入到第一条
iptables -t filter -I INPUT 1 -p icmp -j ACCEPT
#禁止任何主机tcp
iptables -t filter -A INPUT -p tcp -j REJECT
#允许任何主机udp
iptables -I INPUT 1 -p udp -j ACCEPT
#查看行规则的位置
iptables -nL --line-number
#拒绝某一台主机,其他主机可以
iptables -t filter -A INPUT -s 192.168.198.12 -p icmp -j REJECT
#拒绝多台主机
iptables -t filter -A INPUT -s 192.168.198.12,192.168.198.13 -p icmp -j REJECT
#不允许11的数据包出去,其他的就都ping不通了
iptables -t filter -A OUTPUT -s 192.168.198.11 -p icmp -j REJECT
#指定端口
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT
iptables -t filter -A INPUT -s 192.168.198.12 -p tcp --dport 80 -j REJECT
#删除指定的INPUT链中的第一条规则
iptables -D INPUT 1
#删除序号小的
iptables -D INPUT -p icmp -j REJECT
SNAT
源地址转换。
源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址
就是把内网地址转成指定的IP地址,这个iP地址可以访问公网
iptables -t nat -A POSTROUTING -s 192.168.198.0/24 -o ens37 -j SNAT --to 10.0.0.10
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens37时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为10.0.0.10这个地址
DNAT
目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。
通常来说,合法地址的数量比起本地内部的地址数量来要少得多。
私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问
所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问
iptables -t nat -A PREROUTING -d 12.0.0.254 -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.198.11:80
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.198.11
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议
# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.198.11这个地址
联合部署
n85–kk
dns配置
client
[root@node1 network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.10.155
防火墙
web–mysql搭建
client curl成功