软路由:
1. ikuai 实现了一个多宽带线路的一个聚合可用家庭环境
2. Linux通过开启路由转发模拟路由器 (仅学习使用)
#开启路由转发命令
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
主机名
hostnamectl set-hostname www.kernel.com 修改主机名
CentOS 7.x的配置文件为/etc/hostname
CentOS 7.x的域名解析文件为/etc/hosts
CentOS 7.x还可以使用命令永久设置
* 网卡名 CentOS 7.x网卡名是:ens33
* 网络配置命令 CentOS 7.x中:ip/nmtui
* 网络服务 CentOS 7.x默认使用 network 服务 (NetworkManager也启用,但优先级更高)
``` shell
systemctl disable --now firewalld
#立刻关闭并开机不启动
systemctl enable --now firewalld
#立刻开启并开机启动
```
* IP和mac地址的区别?
* ==网络地址:互联网协议地址(IP地址)为互联网上每一个网络或主机分配一个逻辑地址,IP地址工作在网络层==
* ==物理地址:物理地址(MAC地址)为每一个设备设置一个固定的硬件地址,MAC地址工作在链路层 MAC地址:00-23-5A-15-99-42==
![[Pasted image 20240917130810.png]]
**端口配置文件:/etc/services**
20/21 ftp服务 文件共享
22 ssh服务 安全远程管理
23 telnet服务 不安全远程管理
25 smtp:简单邮件传输协议 发信
465 smtp(ssl) 发信
110 pop3:邮局协议 收信
143 imap4 收信
993 imap4(ssl) 收信
80 www服务(http://) 网页访问
443 www服务(https://) 加密网页访问
3306 mysql端口 数据库连接端口
53 DNS端口 域名解析端口
67 DHCP端口
**route -n 查看系统中的路由表信息**
**ip a 查看全部网卡**
**ifup / ifdown 网卡名 针对某一个网卡开启或关闭**
**traceroute :故障点探测命令 当ping不通对方ip时可以用这个命令要用桥接模式**
**netstat 查看系统的网络连接状态、路由信息、接口等**
常用选项:
-a:显示所有活动连接
-n:以数字形式显示
-t:查看TCP协议相关信息
-u:查看UDP协议相关信息
-p:显示PID和进程名
-l:监听
**nslookup:域名解析测试命令**
**全局添加dns的方法:/etc/resolv.conf nameserver ip**
**nmap:网络探测扫描命令**
**-sP 探测某网段内有哪些主机是存活的 nmap -sP 192.168.90.0/24**
**-sT 探测某主机上开启了哪些TCP端口 nmap -sT 192.168.90.100**
RDP 用于远程连接windows的协议
串口 :用于连接硬件(路由器)的协议
临时用于给网卡增加IP:ip addr add 192.168.90.120/24 dev ens33
临时用于删除网卡新增的ip : ip addr del 192.168.90.120 dev ens33
临时:网关:
添加:route add default gw ip
删除:route del default gw ip
永久:网关:/etc/sysconfig/network-scripts/ifcfg-ens33
Nginx源码编译安装后启动脚本
``` shell
#调用action函数的文件位置
source /etc/init.d/functions
nginx=/usr/local/nginx/sbin/nginx
read -p "请输入" qd
case "$qd" in
start)
#把动作结果传到action函数
action "启动成功" $nginx
;;
stop)
action "启动失败" $nginx -s stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "请输入正确选项"
;;
esac
```
主机名修改实验:
素材:
/etc/sysconfig/network #主机名配置文件(CentOS 6)
/etc/hostname #主机名配置文件(CentOS 7)
/etc/hosts #域名解析配置文件
1.
* 保持/etc/hostname配置文件为默认值:localhost.localdomian
* 修改/etc/hosts,增加对本机IP地址的解析,域名自定义即可
* reboot ![[Pasted image 20240910191737.png]]
2
* 修改/etc/hostname配置文件,内容自定义,但不要和/etc/hosts相同
* /etc/hosts配置文件,有或没有对本机IP的解析都可以
* reboot ![[Pasted image 20240910191812.png]]
证明:/etc/hostname优先级比/etc/hosts高
报错:当系统进入启动时进入救援模式
![[1725966536603.jpg]]
用b翻页 红色代表报错结论 要看上面加粗字体是错误原因
![[Pasted image 20240910192543.png]]
发现是没挂载硬盘问题 打开/etc/fstab 发现多了两块盘,删除就可以
![[Pasted image 20240910192633.png]]
telnet #明文传输的远程管理协议
``` shell
yum -y install telnet-server
#telnet没有serive服务
systemctl start telnet.socket
#让windows连接Linux需创建一个普通用户
useradd lsy
passwd lsy
```
![[Pasted image 20240910193820.png]]
扩展 tftp 既有socket又有service 但是是udp服务
``` shell
yum -y install tftp-server
ls /etc/xinetd.d/tftp
systemctl status tftp.socket
systemctl start tftp.socket
systemctl start tftp.service
netstat -anpu | grep tftp 查看tftp服务是否启动
![[Pasted image 20240910194802.png]]```
![[Pasted image 20240910194808.png]]
Socket主要针对那些有监听端口,支持被连接,允许被连接,但连接频率不高的那种服务。
密钥对:
公钥:锁
私钥:钥匙
服务器给我们一个公钥,也就是锁,把要发送的数据锁起来,以加密的形式发到服务器上。过程当中因为数据加密了,所以即便被别人截获到,也没法看到真正的账号密码。
ssh是使用rsa的加密方式
密码(口令)身份验证:
实验一:使用账号密码的方式验证身份
图片解释 :我有公钥和密钥,公钥就是所谓的锁。我把锁给你,你发给我的数据都要经过这把锁加密锁定之后再发过来我的私钥钥匙再解开这把锁,我就可以看到你发给我的数据了
![[Pasted image 20240910202112.png]]
* 先把主机密钥里面的数据删除![[Pasted image 20240910202355.png]]
* 重新登录![[Pasted image 20240910202535.png]]![[Pasted image 20240910202652.png]]
* 按下面步骤并执行find脚本并找到ssh_host_rsa_key.pub这个公钥文件![[Pasted image 20240910203027.png]]
``` shell
#!/bin/bash
echo -e "\e[1;31m此脚本的功能是来根据关键词查询包含此关键词普通文本文件的所在路径。\e[0m"
echo -n "请输入要查询内容的所在目录:"
read dir
echo -n "请输入查询的文件类型"
read type
echo -n "请输入要查询的关键词:"
read xbz
find $dir -type f >> /root/find.txt
#先把Linux系统中所有的普通文件查找出来,并保存到/root/find.txt文件中
for x in $(cat /root/find.txt)
do
file $x | grep "$type" &> /dev/null
test $? -eq "0" && echo $x >> /root/grep.txt
done
#for循环的功能有两个
#1. file命令循环对每个文件进行类型判断
#2. 再使用test判断命令对file执行的结果判断,可以过滤出普通文件中的文本文件
for y in $(cat /root/grep.txt)
do
grep "$xbz" $y &>/dev/null
test $? -eq "0" && echo $y
done
#挨个从文本文件中过滤是否包含指定关键词,然后将包含指定关键词的文件名输出
rm -rf /root/find.txt /root/grep.txt
```
* 私钥和公钥文件![[Pasted image 20240910203423.png]]
密钥对身份验证:
使用密钥对验证身份
免密登录:密钥对身份验证,私钥文件不能设置密码,否则无法免密
实验二 ssh密钥对验证登录:(windows 和Linux远程连接)
实验前提 :客户机已经把公钥放在服务器上了 也就是实验一
原理讲解:
==ssh密钥对登录原理 :首先,客户端事先生成一对密钥,并将公钥保存在服务器上的授权文件中。接下来,客户端不用密码,而是用密钥对来验证身份。客户端用服务器的公钥来加密自己的公钥,然后把加密后的信息发送给服务器。服务器用自己的私钥解密这些信息,得到客户端的公钥,并检查是否与服务器存储的客户端公钥匹配。如果匹配,服务器会进一步确认这个公钥是客户端创建的,于是发送一个加密的质询信息给客户端,让客户端用它的私钥来解密。如果客户端能正确解密并用服务器的公钥重新加密后发回,服务器就能确认这个公钥属于客户端,从而验证了客户端的身份。==
![[Pasted image 20240910203709.png]]
* 创建服务器公钥
![[Pasted image 20240910204232.png]]![[Pasted image 20240910204247.png]]
![[Pasted image 20240910204351.png]]
* 复制公钥 并 vim /etc/ssh/sshd_config 查看保存公钥的配置文件
![[Pasted image 20240910204510.png]]![[Pasted image 20240910205023.png]]
* 在客户端并在root目录下执行以下命令
``` shell
mkdir .ssh
cd .ssh
vi authorized_keys # 把复制的公钥复制到这个文件
```
* 登录是使用ssh密钥登录,发现是免密登录![[Pasted image 20240910205226.png]]
实验三通过密钥对加密的跳板模式 (Linux和Linux之间的)
原理 :非对称密钥对:公钥 私钥 内容完全不一样
1.先分清 服务器 和 客户端
2.使用客户端生成密钥对
3.将公钥文件上传到服务器端
4.在服务器端修改sshd服务的配置文件,实现远程登录模式的修改
5.验证
准备: 前面实验的当服务器 在准备一个Linux当客户端
客户端 执行一下代码
``` shell
ssh-keygen -t rsa -b 2048 #生成密钥对文件
ssh-copy-id 用户名@服务器IP地址 #1将公钥文件上传至服务器端
如果是xshell ssh-copy-id 服务器IP地址
```
![[Pasted image 20240910210549.png]]
服务器 用cat 查看自己的公钥文件变化
![[Pasted image 20240910210440.png]]
客户端可以做的事
免密登录
![[Pasted image 20240910210630.png]]
scp不需要输入密码
![[Pasted image 20240910210714.png]]
写一个自动安装的脚本在客户端执行之后,服务器也安装了
``` shell
$ vim /root/ip.txt
192.168.88.120
$ vim tb.sh
#!/bin/bash
read -p "请输入要批量执行的命令:" command
for i in $(cat /root/ip.txt)
do
ssh $i "$command"
done
```