一、知识点回顾
1、网络?
1、 传输介质
2、 硬件
2、两台主机之间进行通信?
3、交换网络(局域网内 多台计算机之间通讯)
交换机的原理(2层网络 数据链路层 MAC---->表)
|----->主机-----MAC地址
广播风暴的问题
|--->降低 减轻
1、路由器的概念
2、子网掩码(划分)
交换网络中的数据格式
源信息(MAC地址)+目地信息(MAC地址)+数据内容 = 数据格式
ARP
4、局域网和局域网之间计算机之间的通讯(路由器 3级网络设备)
路由器的概念
路由器的工作原理
|---->主机 ----IP地址
路由表
|---->静态 优点 大型 快 专业人士
|---->动态 优点 小型 慢 一般
5、TCP/IP协议名词解释
IP协议
TCP协议
UDP协议
ICMP协议
DNS协议
ARP协议
6、OSI和TCP/IP模型
7层 5(4)层
7.TCP/IP协议名词解释
TCP/IP协议的报文格式
TCP/IP协议的C/S 建立连接 3次握手的过程
TCP/IP协议的C/S 断开连接 4次挥手的过程
TCP/IP协议的C/S 建立连接 3次握手的过程 状态转换
TCP/IP协议的C/S 断开连接 4次挥手的过程 状态转换
8、IP地址
分类 A B C D E
C类 面试 C类地址 192.168.0.x x主机位
D类 组播
特殊的IP地址
0.0.0.0 没有意思
192.168.0.0 没有 -1
192.168.0.255 广播地址 -1
192.168.0.254 网关地址 -1
(网关地址 有可能是192.168.0.1 也有 192.168.0.254)
127.0.0.1
等
9.子网掩码
255.255.255.0 C类
255.255.0.0
255.0.0.0
10、网络划分
1.C类网络中 192.168.0.100 50台主机 划分网络 计算子网掩码。 2^n-3 公式
二、静态路由项目
1、网络中比较重要的协议
1、DNS 域名解析协议
ARP 交换机 主机-----MAC地址
路由器 主机-----IP地址
DNS域名 域名-----IP地址
2、47.75.85.161 域名
www. baidu.com
3、购买自己的一个域名
区块链公司 买域名 BTCVC ZB.COM
根域名服务器 大多是在国外 美国居多 日本 英国等 13台
顶级域名服务器
com cn org edu 等
公司商业组织 地区中国
万网
.vip
阿里云为例
A记录 WWW 网站 www.baidu.com 记录值 IP地址 47.75.80.160
DNS优化 阿里云加速
百度云加速 css js html 预加载到服务器上 CDN 加速
2、企业真实的需求
1、HOSTS文件
2、内网DNS服务器
Linux服务器 DNS
1、本地服务器解析 www.baidu.com
2、转发器
|----->主路由---->DNS---->公网IP DNS---->域名 实现外网的访问。
Windows Server 2008R2
3、常见的网络命令
3.1 ping 命令
ping 域名 DNS问题
ping www.baidu.com 无应答 DNS没有配置 DNS有问题
ping 公网IP
47.75.80.160
ping 网关
192.168.1.1
3.2 iftop监控网络流量用的
Linux服务器下用的 第三方的命令
yum install iftop -y
4、企业网络出现问题的排查流程
第一步 检查硬件 网卡(灯) 网线(水晶头)_路由器(WAN LAN) 交换机
交换法
|--->网线
网卡
第二步 Ping 网关(路由)
第三步 公网IP
第四步 DNS
第五步 Ping 自己服务器地址
5、静态路由项目
1、准备3台虚拟机
第一台一块网卡 10.0.0.11
第二台二块网卡 10.0.0.12 192.168.0.12
第三台一块网卡 192.168.0.13
2、在第一台主机
从主机一10.0.0.11----->主机2---->192.168.0.12
跨网段访问
2.1 不认识
添加一条静态的路由信息
route add -net 192.168.0.0/24 gw 10.0.0.12
route -n 查看路由表
ping 192.168.0.12 通了
2.2 看看192.168.0.13能不能通
10.0.0.11需要 10.0.0.12转发
192.168.0.13 需要 192.168.0.12进行转发
192.168.0.12
10.0.0.12 主机2 信息跟主机2没关系
echo “net.ipv4.ip_forward=1”>>/etc/sysctl.conf
sysctl -p
3、扩展不要求掌握
3.1 iptables 实现跨网段实现上网
端口映射
行为管理
3.2 买企业级路由
下午课堂笔记
一、三剑客:
grep 过滤
-E支持扩展正则===egrep
-o只显示匹配到的内容 显示grep执行过程
-v取反
-i不区分大小写 ignore case find /oldboy -type f -iname "*.txt"
-n显示行号 cat -n
-w按照单词进行匹配
-A9 after 显示grep找出的行及接下来的 9行
-B9 before
-C9 上下
-r-l (小写字母L)
-P ??
sed 过滤 替换 修改文件内容 增删改查
awk 过滤 取列 统计计算
三剑客
grep sed awk
=========================================================================
1、为什么要学习Shell编程?
Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,
例如:自动备份、监控、自动安装服务。
Shell编程是Linux运维人员必须要会的编程语言。最简单的编程语言。
编程也是运维人员必须具备的本领:
Shell、Python是运维人员必须具备的本领
2、什么是Shell?
Shell就是一个命令解释器(翻译官),命令行的命令以及脚本都会通过shell解释,
传给操作系统,处理后在输出给用户。
[root@oldboyedu ~]# tail -1 /etc/passwd
oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash #<==创建用户时,系统指定的翻译官。
3、Shell的分类
1. )Bourne shell
Bourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三种类型。
2. C shell
C shell又包括csh、tcsh两种类型。
4、C7:默认Shell
[root@oldboyedu ~]# echo $SHELL
/bin/bash
5、什么是Shell脚本?
程序、命令放入文件里执行,这个文件称之为Shell脚本文件。
工作中最多的编程写脚本,存放在文件里。
6、Shell变量:
a.全局变量(环境变量)
在整个系统中生效、一般是大写、系统中默认就
存在一些这样的变量,满足系统和程序运行的需求。
系统自带的环境变量;
[root@oldboyedu ~]# echo $PS1
[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\$
b、自定义环境变量:
方法1
export OLDBOY="I am oldboy."
方法2:
OLDBOY="I am oldboy."
export OLDBOY
老男孩推荐以后把环境变量放入/etc/bashrc
c、.局部变量(普通变量)
是编写Shell脚本最常用的变量。
变量名=值
a=1
变量名:数字、字母、下划线,不能是数字开头。
oldboy、 123a、_abc
= 等号:赋值符,把什么东西给谁。赋值符号两边不能有空格。
值:东西,变量内容。
引用内容的符号:单引号、双引号、反引号、不加引号
7、表达式
a、[ 表达式 ]中括号表达式,中括号里面两端必须要有空格。
字符串要加双引号
[root@oldboyedu ~]# [ "a" = "b" ] && echo 1||echo 0
0
[ "a" = "b" ] && echo 1||echo 0
如果表达式成立,打印1,否则打印0.
b、整数表达式:
> -gt
>= -ge
< -lt
<= -le
= -eq
不等于 -ne
1)整数表达式符 两端必须要有空格
2)中括号里面两端必须要有空格。
3)变量和比较的内容,不需要加引号。
c、字符表达式:
-z 变量内容长度为0时,为真(表达式正确)。zero
-n 变量内容长度【不】为0时,为真(表达式正确)。not zero
a == a 字符串是否相同
说明:
1)字符串要加双引号
例子:
[root@oldboyedu ~]# oldboy=""
[root@oldboyedu ~]# [ -z "$oldboy" ] && echo 1 || echo 0
1
[root@oldboyedu ~]# [ -n "$oldboy" ] && echo 1 || echo 0
0
8.shell判断句:
如果...那么。
如果[ 你是潜力股 ]
那么
就和你谈朋友
否则
拜拜
果如
if判断句语法:
if [ 表达式 ]
then
命令
fi
如果[ 你是潜力股 ]
那么
就和你谈朋友
果如
[root@oldboyedu ~]# cat test.sh
#!/bin/bash
a=10
if [ $a -gt 1 ]
then
echo 1
fi
read命令 交互式读取用户输入
-p "提醒:"
-t "多长时间内等待输入"
[root@oldboyedu ~]# cat test.sh
#!/bin/bash
read -p "请输入你喜欢的男孩的一句话:" boy
if [ "$boy" == "潜力股" ]
then
echo "先和你谈谈朋友"
elif [ "$boy" == "老爸是李刚" ]
then
echo "直接嫁给你"
elif [ "$boy" == "二环内有套房" ]
then
echo "立马领证"
else
echo "白白"
fi
9.for循环
for n in 取值列表
do
执行命令
done
========================================================================
1.diff 文本比较
[root@oldboyedu ~]# diff /etc/passwd{,.ori}
32c32
< #oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
---
> oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
1.1 vimdiff文本图形化比较
[root@oldboyedu ~]# diff /etc/passwd /etc/passwd.ori
32c32
< #oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
---
> oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
2. rpm命令
全称是Red Hat Package Manager(Red Hat包管理器),几乎所有的Linux发行版本都使用这种形式的命令管理、安装、更新和卸载软件。
概括地说,rpm命令有五种基本功能(不包括创建rpm包):安装、卸载、升级、查询和验证。
2.1需要很多依赖。
[root@oldboyedu /mnt/Packages]# rpm -ivh dos2unix-6.0.3-7.el7.x86_64.rpm
Preparing... ################################# [100%]
package dos2unix-6.0.3-7.el7.x86_64 is already installed
[root@oldboyedu /mnt/Packages]# rpm -qa|grep tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu /mnt/Packages]# rpm -qa tree
tree-1.6.0-10.el7.x86_64
2.2rpm包管理器安装、卸载、升级、查询和验证
安装
-i 安装install
-v 显示安装过程
-h 用“#”显示安装进度条
升级
-U 用“#”显示安装进度条
卸载
-e卸载软件包
--nodeps 忽略依赖
查询
-q查询
-a所有
-l显示软件包中的所有文件列表
-f 查询文件或命令属于哪个软件包
3、yum主要用于自动安装、升级rpm软件包,它能自动
查找并解决rpm包之间的依赖关系。
[root@oldboyedu ~]# yum grouplist #<===获取组包名列表
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
Available Environment Groups: #<=====可用性环境组
Minimal Install #<=====最小安装
Compute Node #<====计算节点
Infrastructure Server # <=====基础架构服务器
File and Print Server #<======文件和打印服务器
[root@oldboyedu ~]# yum list tree <===获取命令tree的软件包名
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
tree.x86_64 1.6.0-10.el7 @base
根据命令或者配置等的路径查属于哪个包
[root@oldboyedu ~]# yum provides /etc/my.cnf
[root@oldboyedu ~]# yum provides /sbin/ifconfig
4.Linux系统如何安装软件?
1)、rpm安装
简单 快。依赖多,解决依赖困难繁琐。
2)、yum安装 *****
简单快,自动解决依赖。不能选择软件版本或软件存放路径。
3)、编译安装(源码编译)*****
慢 复杂 需要GCC编译器,可以自定义安装(版本、软件路径)
4)、将源码制作成rpm,然后放到yum仓库,实现yum自动安装。
一次性慢 复杂,安装快,可以自定义安装(版本、软件路径)
5.chattr设置文件属性
+i锁定文件
-i解锁文件
+a 只能追加不能删除文件和内容
-a解锁
chattr -i /etc/passwd #<==解锁文件。
给重要文件上锁
[root@oldboyedu ~]# chattr +a oldboy.txt
[root@oldboyedu ~]# rm -f oldboy.txt #<===不能删除文件
=======================================================================
一、复习第0章到第十四章的内容
重点:1)Linux默认策略,把没有使用的内存,都会作为缓冲区或者缓存区
2)1.常规分区
/boot 1024M
swap 内存1.5倍 大于8G给8G
/ 所有 或者有/home /var /usr
2.存储 数据库 备份
/boot 1024M
swap 内存1.5倍 大于8G给8G
/ 100-200G
/data 所有 放数据
3.门户
/boot 1024M
swap 内存1.5倍 大于8G给8G
/ 100-200G
剩下保留。
3)虚拟机与xshell链接排错
SSH默认22端口
0.VM虚拟网络编辑器设置
1、服务端运行。
[root@oldboyedu /opt]# netstat -lntup|grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6899/sshd
tcp6 0 0 :::22 :::* LISTEN 6899/ssh
[root@oldboyedu /opt]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-10-28 21:09:17 CST; 1 years 6 months left
Docs: man:sshd(8)
2.客户端ping
ping 10.0.0.201
3.客户端检查服务
[c:\~]$ telnet 10.0.0.201 22
Connecting to 10.0.0.201:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4
IP端口别错,就是防火墙问题。
4.xshell连接设置
4)开机自启ssh
c6:/etc/init.d/sshd restart
service sshd restart
c7:systemctl restart sshd
5)磁盘体系:
1.磁盘维护
2.挂载
3.文件系统
4.分区
5.raid知识体系
6.内外部结构、读写原理
6)网络部分:
1、tcp三次握手四次挥手。
2、11种状态
3、tcpdump/wireshark/route
4、不能上网如何排查。
二、iftop 监控网络流量
-i ech0 看监控某个网卡
ifconfig 查看设置ip
ip查看和设置网络和IP
ping检查网络是否通畅
traceeoute查看到达主机的网络路由信息
-d不做反向解析
route查看设置网关 路由
-host主机路由 -net网络路由 默认网关default gw
del 删除
add添加
=======================================================================
1、什么是集群?
简单地说,集群就是一堆机器做同一件事,
例如:www.jd.com提供卖东西服务这就是一件事,可能是几千台服务器,在背后运转支撑这个网站。
www.baidu.com看着就是一个搜索框,背后可能是上万台服务器。
2、为什么企业要用集群?
a.7*24服务,需要多台机器同时工作,互为实时备份。
b.高并发访问,需要多台服务器同时提供服务。
3.集群特点
a.数据量大、用户多
b.7*24持续服务
c.高并发
d.用户分布广泛,网络情况复杂
4.形象描述集群
5基础优化
第一步规范目录
mkdir -p /server/tools 文本
mkdir -p /server/scripts 放脚本的
第二步
配置所有主机域名解析
cat >/etc/hosts<
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
EOF
第三步
第一个:就近使用yum源地址,安装软件更快。
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
第二个:安装RHEL/CentOS官方源不提供的软件包
curl -s -o /etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-7.repo
第四步安全优化
# 1、关闭selinux
sed -i 's#SELINUX=.*#SELINUX=disabled#g'/etc/selinux/config
sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0 临时关闭selinux
getenforce 查看selinux
#2关闭防火墙
systemctl stop firewalld 关闭
systemctl disable firewalld
禁止开机自启
status 查看关闭状态
第五步、设置普通用提权操作
# 提权oldboy可以利用sudo
useradd oldboy
echo 123456|passwd --stdin oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c
第六步# 设置系统中文UTF8字符集(防止中文汉字乱码)
[root@oldboyedu ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
修改命令如下:
cp /etc/locale.conf /etc/locale.conf.ori
echo 'LANG="zh_CN.UTF-8"' >/etc/locale.conf
source /etc/locale.conf
echo $LANG
第二种修改
cp /etc/locale.conf /etc/locale.conf.ori
localectl set-localeLANG="zh_CN.UTF-8"
cat /etc/locale.conf
第七步设置时间同步
#1yum install ntpdate -y
/usr/sbin/ntpdate ntp3.aliyun.com
#2 echo '#crond-id-001:time sync by oldboy'>>/var/spool/cron/root
echo "*/5 * * * * /usr/sbin/ntpdatentp3.aliyun.com >/dev/null 2>&1">>/var/spool/cron/root
crontab -l
第八步
history 查看使用命令过的历史记录 -c清空历史记录
-d指定数字清楚
8.基础优化操作项:提升命令行操作安全性(可选优化)
# 提升命令行安全(可选配置)
echo 'export TMOUT=300'>>/etc/profile 设置会话超时300秒
echo 'export HISTSIZE=5'>>/etc/profile 历史记录保留5个
echo 'export HISTFILESIZE=5'>>/etc/profile 历史记录目录保留5个
tail -3 /etc/profile
. /etc/profile
第九步:基础优化操作项,加大文件描述符
ulimit -n
.基础优化操作项:加大文件描述符
# 实例演示:加大文件描述
echo '* - nofile 65535 '>>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
ulimit -SHn 65535
ulimit -n #<==命令方式查看配置结果
第十步:优化内核
cat >>/etc/sysctl.conf<
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established= 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF
sysctl -p
第十一步
基础优化操作项:安装系统常用软件
CentOS6
和CentOS7都要安装的企业运维常用基础工具包
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
CentOS7
要安装的企业运维常用基础工具包
yum install psmisc net-tools bash-completion vim-enhanced -y
第十二步.基础优化操作项:优化SSH远程连接效率
禁止root远程连接
修改默认22端口,改为52113
监听内网服务器IP
第十三步扩展优化操作项-修改yum.conf文件配置信息
保留yum安装的软件包
将/etc/yum.conf中的keepcache=0改为keepcache=1,为日后一键安装网站集群留好rpm及依赖工具包。
第十四步. 锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,处理以上内容后把chattr、lsattr改名为oldboy,转移走,这样就安全多了。
第十五步. 清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。
第十六步. 清除多余的系统虚拟用户账号。
第十七步. 为grub引导菜单加密码(自学)。
第十八步. 禁止主机被ping(内核参数)。
第十九步.打补丁并升级有已知漏洞的软件
yum update
第二十步.精简开机自启动服务
systemctl list-unit-files |grepenable|egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service"|awk'{print "systemctl disable",$1}'|bash
systemctl list-unit-files |grep enable
保留服务:
sshd|crond|sysstat|rsyslog|NetworkManager|irqbalance
========================================================================