dig 用于在 linux 下查询域名解析的信息。

一、基础命令

dig www.guohuawei.com

即查询域名的A记录,查询的 dns 服务器将采用系统配置的服务器,即/etc/resovle.conf 中的。

二、查询其他类型记录

如果要查询其他类型的记录,比如 MX,CNAME,NS,PTR 等,只需将类型加在命令后面即可。

dig www.guohuawei.com mx
dig www.guohuawei.com ns

三、查询指定 dns 服务器的解析

如果你是一个系统管理员,部署好了一台 dns 服务器之后想对它进行解析测试,就必须要显式指定待测试的 dns 服务器地址了,例如:

dig @202.106.0.20 www.guohuawei.com a

四、输出逐级查询的过程

另外一个重要的功能是 +trace 参数,使用这个参数之后将显示从根域逐级查询的过程:

dig www.guohuawei.com a +trace

比如,对域名 www.guohuawei.com A 记录的 trace 查询可以看到根域.,顶级域 .com,以及 guohuawei.com 的域名权威服务器的地址及其各自的返回结果,这样对于追踪 dns 解析中的问题有很大的帮助。

; <<>> DiG 9.10.6 <<>> guohuawei.com +trace
;; global options: +cmd
.            61341    IN    NS    m.root-servers.net.
.            61341    IN    NS    i.root-servers.net.
.            61341    IN    NS    e.root-servers.net.
.            61341    IN    NS    l.root-servers.net.
.            61341    IN    NS    d.root-servers.net.
.            61341    IN    NS    a.root-servers.net.
.            61341    IN    NS    g.root-servers.net.
.            61341    IN    NS    b.root-servers.net.
.            61341    IN    NS    f.root-servers.net.
.            61341    IN    NS    j.root-servers.net.
.            61341    IN    NS    c.root-servers.net.
.            61341    IN    NS    k.root-servers.net.
.            61341    IN    NS    h.root-servers.net.
;; Received 228 bytes from 192.168.1.1#53(192.168.1.1) in 8 ms

com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            172800    IN    NS    e.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
com.            86400    IN    DS    30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400    IN    RRSIG    DS 8 1 86400 20190611050000 20190529040000 25266 . Eigc8QOV/Nr0YjVSd8IbNk7RnAuNean6e4qpXej/V09bcPtnOGu8i7zl 4V5tuaBAqbPKed9LTxcyqhTgBqXPMAU2vBqtBj48voFsUKzhlQp5HMwN CgGqpc2vTF0UoZ/omPOYw0P+++1gjXvyLJuqAmOrnxBoMXX09QaN4lSg loX8T8NU/dbpKO/WHsUYkOpHSzLYcxm4eqSbbakcc915VjAwhwY4pSBs ohLmTNnCtma0mPfZPAE8KjoF1I52TFOfwh4BlBvKnFVJXE1LwDn4b3h6 jS681KZQOm+JjHK4lu0Oo+UarWvtdJm4EFw2kYribsRCcnJcfVKLa9uv SQIJ8g==
;; Received 1173 bytes from 199.7.91.13#53(d.root-servers.net) in 233 ms

guohuawei.com.        172800    IN    NS    dan.ns.cloudflare.com.
guohuawei.com.        172800    IN    NS    zara.ns.cloudflare.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A  NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20190604044533 20190528033533 3800 com. YQdumHEEUmzxuBxPBgehzu4J2IUp49V8I/9jmOCeLkaXkjaIBpU6eEFg dS5HTiEjHIzJaQeCvih3VmXTdYlUj9exoNz5anezyE913cr9EAczipcN wM18pVhvJMAwNyc+vpKKquwEKb13smt8hVaezr+KRyVxG0cZSxb1IX/6 IO4=
RM7TI8631VFRPOU55KFMOFT3D91LITIP.com. 86400 IN NSEC3 1 1 0 - RM7TUTM87U3I48029OCNGJ1SF3U2LHLJ  NS DS RRSIG
RM7TI8631VFRPOU55KFMOFT3D91LITIP.com. 86400 IN RRSIG NSEC3 8 2 86400 20190603043659 20190527032659 3800 com. AiI4JLNemP1Lexi9c5fSvZCCRAKyT2v/qs703F9ToWC1NVGYvYGR/Jrg asfAFJFd/lFMHQ5zPAqY4ecUN+5GoBRnWqjc5G8j+tH0Bd+YAjasR6uB m1C6CWS5HkNeQgKCrE03Ju+nfHnSfsvtBZvYm4MZoUb9UHAWMK/Eg+z8 XAk=
;; Received 666 bytes from 192.52.178.30#53(k.gtld-servers.net) in 192 ms

guohuawei.com.        300    IN    A    104.31.79.160
guohuawei.com.        300    IN    A    104.31.78.160
;; Received 74 bytes from 173.245.59.108#53(dan.ns.cloudflare.com) in 193 ms

五、域名不存在时

比如解析 bucunzaiba.com 这个域名, 整个过程如下:

  1. 由根域名返回.com顶级域的服务器地址
  2. 由.com顶级域查到二级域名不存在,返回一条SOA记录

如:

dig bucunzaiba.com +trace

; <<>> DiG 9.10.6 <<>> bucunzaiba.com +trace
;; global options: +cmd
.            61015    IN    NS    m.root-servers.net.
.            61015    IN    NS    i.root-servers.net.
......

com.            900    IN    SOA    a.gtld-servers.net. nstld.verisign-grs.com. 1559124593 1800 900 604800 86400
com.            900    IN    RRSIG    SOA 8 1 900 20190605100953 20190529085953 3800

一、背景

Ubuntu16下,使用 apt-get 下载的 nodejs 最新版本需要升级。

二、解决方法

用 npm 安装了 Node 工具包 n ,使用该工具包将 node 升级到最新版本:

sudo npm install n -g
sudo n stable

三、n 工具包说明

n 是一个Node工具包,它提供了几个升级命令参数:

n 显示已安装的Node版本
n latest 安装最新版本Node
n stable 安装最新稳定版Node
n lts 安装最新长期维护版(lts)Node
n version 根据提供的版本号安装Node

一、创建 swapfile

sudo fallocate -l 4G /swapfile

二、启用 swap 分区

1、首先,我们需要使用如下命令更改下swapfile文件的权限:

sudo chmod 600 /swapfile

2、然后,我们需要用如下将swapfile初始化为交换文件:

sudo mkswap /swapfile

3、最后,还需要使用如下命令来启用交换文件:

sudo swapon /swapfile

4、查看结果

free -m

三、配置启用时挂载 Swap 分区文件

Swap交换文件虽然已经配置好并已经启用了,但Ubuntu在重启后是不会挂载我们刚创建的交换分区文件的,因此我们还需要对/etc/fstab文件进行更改,让其在系统启动时就自动挂载我们创建的/swapfile文件。

sudo vim /etc/fstab

添加如下内容:

/swapfile none swap sw 0 0

提示:按【Esc】后输入:":wq!"退出。

四、卸载Swap分区

sudo swapoff /swapfile

自从 Red Hat® Enterprise Linux® (RHEL) 7 and CentOS® 7 开始, firewalld 开始作为默认的防火墙软件。 当然,你可以选择关闭 firewalld,而启用 iptbales 作为防火墙。这篇文章将指导你完成这个工作。

一、关闭 firewalld

执行以下命令:

$ systemctl stop firewalld
$ systemctl mask firewalld

二、安装并配置 iptables

执行以下命令安装:

$ yum install iptables-services

设置默认启动:

$ systemctl enable iptables
$ systemctl enable ip6tables

三、添加 iptables 防火墙规则

以下为最基础的规则, 开放 22 和 80 端口:

$ cat /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [214:43782]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
$cat /etc/sysconfig/ip6tables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [214:43782]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

四、重启 iptables 并查看 iptables 运行状态

重启 iptables

$ systemctl restart iptables
$ systemctl restart ip6tables

查看运行状态

$ systemctl status iptables
$ systemctl status ip6tables

查看 iptables 规则

$ iptables -L -n
$ ip6tables -L -n

查看端口及服务

$ netstat -plant

查看服务运行日志

查看 iptables 服务运行日志:

$ journalctl -f -u iptables.service
$ journalctl -f -u ip6tables.service

五、重启确认效果

重启服务,确认一下 iptables 规则是否生效。

Linux 学习目标

熟悉 linux 操作系统,熟悉 linux 操作,熟悉 linux 常用的软件,掌握 linux 对基本命令。
能够独立的维护 lnmp 服务器环境。

一、掌握 linux 的安装

虽然目前云服务基本很少会自己安装了,不过自己学习安装可以了解到很多东西,非常必要。

二、熟悉 linux 的基本操作

  • 目录操作:cd,ls,pwd,mkdir,rmdir
  • 文件操作:cp,rm,mv
  • 文件查看:cat,head,tail
  • 文件编辑:vim 编辑器的常规使用,nano 编辑器的常规使用
  • 文件查找:find 命令的使用。
  • 文件打包:tar,zip,rar 等命令,主要使用 tar 命令。
  • 文件及目录的权限:chown,chmod
  • 磁盘操作:fdisk,mount,umount,mkfs, df,du, fstab 配置等。
  • 服务器状态检查:内存,cpu,进程管理,网络等操作。topfree -mps,netstat
  • 用户操作:用户管理,将用户加入用户组,用户组管理,用户账号管理(了解,学习,但不是重点)
  • ssh 操作:ssh,ssh-keygen,ssh-copy-id,scp:ssh 密钥生成,及远程登录的工具。

三、掌握 linux 的软件安装,配置,启动,管理

  • yum 安装:熟悉(主流)
  • 编译安装:了解(偶尔用到)
  • rpm 安装:了解(偶尔用到)

四、熟悉 linux 环境下常用的服务或软件

  • ssh 服务:了解 linux sshd 服务,生成 ssh 密钥,ssh 登录等。
  • ntp 服务:了解即可。
  • nfs 服务:了解即可,目前用的少了
  • iptables 防火墙:了解防火墙的配置规则,务必了解。
  • crontab:计划任务
  • systemctl:目前主流的服务管理方式。
  • network:网络配置,ifconfig 命令。
  • nginx:学会 nginx 的安装,配置。
  • php-fpm:学会安装,配置 php-fpm,学会安装 php 扩展
  • mysql:除了会安装,配置,还需要学习 mysql 数据库的基本概念,常用命令,查询语法。
  • redis:出了学习安装,配置,还需要了解 redis 的常规操作,基本的数据结构。
  • git:除了会安装,还需要学会 git 的常规操作
  • zsh + oh my zsh: 一个能够提升用户体验及操作效率的 shell。
  • filezilla: sftp 工具,跨平台文件传输工具。
  • nload:用来在内部查看服务器的流量情况(按照网卡查看)
  • nethogs: 用来在服务器内部查看网络使用的具体情况(按照进程查看)
  • sync:文件同步服务

五、服务器管理

  • 日志分析:log
  • 日志切割:rotate
  • 服务器性能:cpu,memory,disk,swap,df,top,netstat

六、shell 脚本

  • shell:了解 shell 脚本的基本语法
  • 常用命令: grep,awk,sed,exec,xargs,wc,sort
  • 尝试编写脚本:定期切分日志,定期备份数据库。

七、其他运维相关

  • 域名解析:A记录,mx 记录,txt记录,cname。
  • 本地DNS:hosts 记录。
  • ping 工具。

八、考核

  1. 独立构建 lnmp 服务器,架设基于 ecms 的 web 站点,做 dns 解析。
  2. 检查 xxx.com web 服务,以及其配置文件,查看 iptables 设置的规则,查看自启动服务,计划任务。
  3. 为 xxx.com 制作 https 证书。
  4. 为 xxx.com 做数据库备份,写脚本做定期备份。
  5. 查看 logrotate 文档,定期切割 xxx.com 的 nginx 日志。
  6. 分析 xxx.com 日志,找出一个小时以内,访问页面最多的 10 个 ip。