docker运行一个bind9和常用的网络命令
# docker运行一个bind9和常用的网络命令
提示: 启动用户所属主ID:101
# 拷贝初始配置文件
mkdir -p /data/bind9/bind && cd /data/bind9
docker run -d --name bind9-container -e TZ=UTC -p 30053:53 -p 30053:53/udp ubuntu/bind9:9.18-22.04_edge
#只保留这几个文件:bind.keys named.conf named.conf.default-zones named.conf.options rndc.key
docker cp bind9-container:/etc/bind bind_tmp
cd bind_tmp && cp bind.keys named.conf named.conf.default-zones named.conf.options rndc.key ../bind/
docker rm -f bind9-container
2
3
4
5
6
7
8
# 修改配置文件
当前主机IP: 192.168.0.10
cd /data/bind9
cat >bind/named.conf.default-zones<<'EOF'
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
zone "yfklife.cn" IN {
type master;
file "/etc/bind/yfklife.cn";
};
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
cat >bind/yfklife.cn<<'EOF'
@ IN SOA yfklife.cn. root (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
IN NS ns1.yfklife.cn.
ns1 IN A 192.168.0.10
@ IN A 192.168.0.200
ci IN A 192.168.0.200
git IN A 192.168.0.201
loki IN A 192.168.0.202
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 配置docker-compose
cd /data/bind9
cat >docker-compose.yaml<<'EOF'
version: '3'
services:
bind9:
restart: always
network_mode: bridge
image: ubuntu/bind9:9.18-22.04_edge
container_name: bind9
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime
- ./bind:/etc/bind
ports:
- "53:53/tcp"
- "53:53/udp"
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 启动
文件授权:chown -R 101.101 /data/bind9/bind
docker-compose -f docker-compose.yaml up -d
# dig命令
- 安装
#centos
yum install bind-utils -y
#ubuntu
apt install dnsutils -y
2
3
4
5
dig @192.168.0.10 git.yfklife.cn
dig ANY +short @192.168.0.10 test-01.yfklife.cn
- 指定dns服务端口:55353
dig +short docker.com @192.168.0.10 -p 55353
- dns追踪,利用多个域名对比权威的dns解析商
dig +trace @192.168.0.10 baidu.com
# traceroute路由追踪
traceroute的工作原理是基于ICMP(Internet Control Message Protocol)和IP头部的TTL(Time To Live)字段
- 解析请求地址,直接显示IP地址
traceroute -n www.baidu.com
- 指定吓一跳次数3次
traceroute -m 3 www.baidu.com
- 指定端口:443
traceroute -p 443 www.baidu.com
# ip route
- 添加路由
优先选择metric值最小的路由
ip route add 192.168.10.0/24 via 192.168.10.1 dev ens21f1 metric 99
- 删除路由
ip route del 192.168.10.0/24 via 192.168.10.1 dev ens21f1 metric 99
# Ubuntu22.04 设置开机自启动
- 方式一
使用netplan 服务管理
- 方式二
cat >/etc/init.d/ip_route<<'EOF'
#!/bin/bash
### BEGIN INIT INFO
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
case "$1" in
start) ip route add 10.61.16.0/24 via 192.168.108.1
;;
stop) ip route del 10.61.16.0/24 via 192.168.108.1
;;
status)
netstat -rn
;;
*)
echo "Usage: $0
{start|stop|status}"
exit 1
;;
esac
exit 0
EOF
chmod +x /etc/init.d/ip_route
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
update-rc.d ip_route defaults 99
systemctl enable ip_route
- 方式三
通过systemd 和脚本
#添加systemd单元
cat >/lib/systemd/system/ip_route.service<<'EOF'
[Unit]
Description=Add ip route
After=networkd-dispatcher.service
[Service]
Type=simple
ExecStart=/etc/init.d/ip_route.sh
[Install]
WantedBy=multi-user.target
EOF
#配置启动脚本
cat >/etc/init.d/ip_route.sh<<'EOF'
#!/bin/bash
ip route add 192.168.10.0/24 via 192.168.108.1 dev ens33 metric 99
systemctl enable ip_route
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# nmcli(NetworkManager命令行工具)
在 CentOS 7 中,默认使用NetworkManager守护进程来监控和管理网络设置,nmcli是命令行的NetworkManager工具,会自动把配置写到/etc/sysconfig/network-scripts/目录下面
在 openEuler 中,NetworkManager 也是常用的网络管理服务,可能没有 /etc/sysconfig/network-scripts/,需要手动创建
- 查看网络连接状态
nmcli connection show
- 创建一个新的网络连接
nmcli connection add type ethernet con-name ens192 ifname ens192 ip4 192.168.255.129/24 gw4 192.168.255.2 ipv4.never-default yes
nmcli connection modify ens192 ipv4.dns "180.76.76.76 223.5.5.5"
2
ifname(DEVICE): 设备名
con-name(NAME):配置文件名 ifcfg-ens192
ipv4.never-default yes : 设置为yes,将不会为该网卡自动添加0.0.0.0的默认路由
- 设置开机自启动
nmcli connection modify ens192 autoconnect yes
- 启用新的网络连接,(device使用已经在用的网卡,会把在用的停掉,启用新配置的网卡配置文件)
nmcli connection up ens192
- 加载所有的网卡配置文件
nmcli connection reload
# NetworkManager服务配置网卡配置文件
- 配置网卡配置文件
ip a
查看有哪些网卡名,再配置对应的网卡名,把配置写到/etc/sysconfig/network-scripts/目录下面
[root@openEuler03 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.5.126
PREFIX=24
GATEWAY=192.168.5.1
DNS1=180.76.76.76
2
3
4
5
6
7
8
9
10
11
- 加载网卡配置文件
*在不重启系统的情况下,仅重启NetworkManager服务,它不会重新读取/etc/sysconfig/network-scripts/ 下文件使其生效
*加载网卡配置文件 ens192
- 重新加载所有的网卡配置文件,没有对应的设备名会报错
nmcli connection reload
nmcli connection up ens192
2
3
- 加载某个配置网卡文件ifcfg-ens192
nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens192
nmcli connection up ens192
2