目录
- 数据通信基础
- DHCP
- DNS
- 配置网络服务
- 网卡的概念
- 网卡ip的设置规则
- 修改网卡配置文件
- nmcli
- ifconfig
- 防火墙
- 防火墙管理工具
- iptables 五链四表 -P -F -vnL -D -R -A --dport --sport
- NAT(地址转换协议) SNAT DNAT
- firewalld
- SELINUX
- 计划任务
- 日志管理
数据通信基础
ip地址
- A类
- B类
- C类
- D类
- E类
子网掩码
私有ip地址
DHCP
给设备自动分配ip
- DHCP协议自动分配的ip和静态ip的区别: 静态IP 像 买房:地址永久固定(
门牌号A座101),朋友随时能找到你家(服务器)。可以联网。 DHCP 像 租房:每次可能换房间(IP变动),但中介(路由器)会告诉你当前住哪,也能出门(联网)。 - 流程: 1)discover 客户端向整个内网发送广播---->新租客大喊求助 2)offer DHCP服务器对客户的回应---->每个听到的中介都马上回应这个新租客 3)request 客户端确认DHCP服务器的消息---->租客选择一家中介,通常选择第一个 4)ACK DHCP服务器给客户端的最终确认,客户端收到后激活网络配置---->正式签约交付钥匙🔑
- 续租
#租期过半时:
你的手机(租客)会悄悄主动找到老王中介(上次的DHCP服务器),小声问:“老王啊,时间过半啦!我那套 192.168.1.100 能不能续租?给我续上吧?”
(技术上:客户端发送 DHCP Request 单播包直接给服务器请求续租。)
如果老王回应说 OK: (DHCP ACK) 租期重新计算,一切照旧。
#如果租期过了一大半还没续成(老王没回应):
你的手机会有点急,再次站上广场广播喊(像第三步一样):“喂!哪位中介在?我之前租的 192.168.1.100(地址)快到期了!哪位能给我续上?或者给我个新地址也行啊?”
这时,任何听到的中介(任何DHCP服务器)都可以回应 (DHCP Offer),手机可以选一家续租或换地址。
#如果租期彻底用完都没续成:
手机就不能再用 192.168.1.100 这个地址了(IP配置失效),相当于被“赶出家门”,又变成开头那个迷茫的新租客,得重新从第一步开始大喊求助 (DHCP Discover)。
DNS
域名解析
- 概念
#域名
主域名,是用来识别主机名称和主机所属的组织机构的一种分层结构的名称http://www.baidu.com(域名使用.连接)
一级域名,com,表示这是一个企业域名。同级的还有 "net"(网络提供商),"org"(非盈利组织) 等。
二级域名, baidu,公司名
#作用:把“好记的名字”(域名)翻译成“难记的门牌号”(IP地址)。
你想访问一个网站,比如 www.example.com。这个“名字”对人类很友好,很好记。
但对于网络设备(路由器、服务器)来说,它们互相通信需要的是具体的“门牌号”(IP地址,比如 93.184.216.34),不认识名字。
#DNS 就像一个超大规模的、全球联网的“电话簿查号台”。
当你输入 www.example.com 并按下回车时,你的设备就会问配置好的 DNS 服务器 www.example.com IP地址是多少?”
DNS 服务器在它庞大的数据库(域名系统)里查找这个域名对应的 IP 地址。它可能自己知道,也可能需要去问更高级别的 DNS 服务器(这过程很快)。
最终,DNS 服务器会告诉你的设备:www.example.com 的IP地址是 93.184.216.34。
于是,你的设备就可以拿着这个 IP 地址去连接真正的网站服务器了。
配置网络服务
- 网卡的概念:
1.物理网卡:主板上的硬件(eg.eth0)
2.虚拟网卡:软件模拟的接口
3.作用:负责网络数据的收发,是计算机与网络通信的桥梁
- 网卡ip的设置规则
1.需要与网关在同一子网,否则无法访问外网
2.主机位全0表示整个子网,主机位全1用于广播 eg. 192.168.1.0
192.168.1.255
3.虚拟网卡ip:
1)桥接模式,虚拟机网卡ip需与物理及网络同网段
2)NAT模式,虚拟机使用独立私有网段
4.127.0.0.1,仅本机通信
- 修改网卡配置文件(在vim里修改)
1.vim /etc/NetworkManager/system-connections/ens160.nmconnection
2.[ipv4]
address1=192.168.88.110/24,192.168.88.2
dns=114.114.114.114;114.114.115.115;
method=manual
#ipv4的核心作用是为网络中的设备分配唯一标识(IP 地址),并定义数据如何在互联网中路由传输。
address1:静态 IPv4 地址及其子网掩码,格式为 IP地址/子网掩码 和网关,例:192.168.88.110/24,192.168.88.2
dns:DNS服务器地址
method:ipv4地址配置方法,manual意思为手动配置
- /nmcli 重点掌握
#查看接口状态 nmcli device status#查看链接信息 nmcli connection show#配置ip等网络信息 nmcli connection modify "ens160" ipv4.addresses 192.168.229.110 /24 ipv4.gateway 192.168.229.2 ipv4.dns"8.8.8.8,8.8.4.4" ipv4.method manual- 停止/启动窗口
nmcli connection down ens160 nmcli connection up ens160 - 删除链接:
删除的是链接不是设备,应该输入的是链接名称 nmcli connection delete dhcp_ens160 - 创建链接
#ifname 设备名称,con-name链接名称 nmcli connection add type ethernet ifname ens160 con-name dhcp_ens160 - 给网卡添加/删除IP地址(会写进配置文件)
[root@server1 ~]# nmcli connection modify ens160 +ipv4.addresses "192.168.229.200/24" [root@server1 ~]# nmcli connection modify ens160 +ipv4.addresses "192.168.229.201/24" [root@server1 ~]# nmcli connection modify ens160 -ipv4.addresses "192.168.229.202/24" - ifconfig 简单但功能有限,正被逐步淘汰,不怎么需要记
- 。ifconfig ens160 down ifconfig ens160 up ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
- route -n:查看路由表的信息
防火墙
防火墙管理工具
iptables
- 五链四表 五链: 链名 作用位置 通俗解释 PREROUTING 数据包 刚进小区门 快递刚进小区大门,还没确定送给哪户人家(目标 IP 是否本机)。仅用于修改目的地址(DNAT) INPUT 数据包 送到你家门口 快递确认是给你的(目标 IP 是本机),准备交给你的应用程序(如浏览器)。 FORWARD 数据包 只是路过小区 快递是邻居家的,你的电脑充当中转站(网关),门卫直接放它去邻居家。 OUTPUT 数据包 从你家出门 你发出的快递(本机主动访问外部),从你家门口出发。 POSTROUTING 数据包 离开小区大门 快递即将出小区大门,统一打上你家门牌号(SNAT 源地址转换),隐藏内部地址。 五链是 数据包的必经检查点,决定了规则生效的位置。 四表:
| 表名 | 职责 | 支持的链 | 通俗解释 |
|---|---|---|---|
| raw 表 | 连接追踪特殊处理 | PREROUTING, OUTPUT | 标记哪些快递 跳过自动追踪系统(比如超大宗货物走特殊通道) |
| mangle 表 | 修改包头部信息 | 所有五链 | 给快递包裹 贴标签、改备注(如修改 TTL、QoS 标记),但不决定拦截与否 |
| nat 表 | 地址/端口转换 | PREROUTING, POSTROUTING, OUTPUT | 核心职能: • 改门牌号(DNAT:把快递从 101室 改到 102室) • 隐藏寄件人(SNAT:统一用小区代收点地址寄出) |
| filter 表 | 是否放行包(最常用) | INPUT, FORWARD, OUTPUT | 核心安检: • 你家快递能收吗?(INPUT) • 邻居快递能中转吗?(FORWARD) • 你能寄快递吗?(OUTPUT) |
- -A 追加规则 -j 处理策略 -s 数据包的来源地址 -p 数据包的协议类型(eg. tcp,imcp…) -D 后面可以接编号或具体规则内容进行删除 -R 后面可以接编号进行修改 -vnL 查看规则 -F 删除所有规则
- iptables常见的命令:
iptables -vnL INPUT --line-numbers:查看INPUT链上的规则iptables -A INPUT -p tcp --dport 80 -j DROP:丢弃所有访问80端口的数据包(不管来自哪个地址)iptables -A INPUT -s 192.168.88.1 -p icmp -j DROP:丢弃来自192.168.88.1的icmp协议的数据包(效果就是pingbutong)iptables -A INPUT -s 192.168.88.100 -j DROP:丢弃来自192.168.88.100这个IP的所有数据包iptables -A INPUT -p tcp --dport 22 -j REJECT:拒绝来自任意地址的访问22端口(效果就是无法远程连接ssh)iptables -D INPUT -p tcp --dport 22 -j REJECT:删除具体的规则iptables -D INPUT 1:删除INPUT链上的第一条规则iptables -F:清空所有的规则iptables -R INPUT 1 -p icmp -s 192.168.80.1 -j ACCEPT:修改第一条规则为接收- 自定义链 1.自定义链需通过系统链“触发” 2.自定义链与系统链的规则执行逻辑完全相同,可在自定义链中添加任意多条规则, 3.按顺序逐条匹配,命中即执行并终止。 INPUT绑定规则 流量筛选器 决定哪些流量需要进入自定义链 自定义链规则 动作执行器 对筛选后的流量批量执行相同动作 同一主机是否只能有一条规则? ❌ 可配置多条规则 后续规则是否会失效? 取决于前置规则的动作类型: -
ACCEPT/DROP会导致跳过后续规则 -JUMP/LOG不影响后续规则 如何保证多条规则都执行? 策略: 1. 非终结性动作在前 2. 避免提前使用ACCEPT/DROP3. 用自定义链的RETURN机制 - NAT
SNAT 的核心作用
将内网设备的私有 IP 转换为网关的公有 IP(或指定 IP)实现内网设备通过单一公网 IP 共享上网
SNAT案例步骤:
1.在server2下载httpd
2.关掉server2,设置网卡为仅主机
3.在server1,加一个仅主机的网卡
4.在server1,开启数据转发功能
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
5.在server1关掉防火墙和selinux systemctl stop firewalld.service setenforce 0
6.在server1上配置SNAT规则
[root@server1 ~]# iptables -t nat -A POSTROUTING -s 192.168.124.0/24 -j SNAT --to-source 192.168.229.129
7.在server2设置网关
[root@server2 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.124.129/24 ipv4.gateway 192.168.229.128 ipv4.dns 114.114.114.114 ipv4.method manual
8.[root@server2 ~]# systemctl restart NetworkManager
9.现在就可以在server2 ping通了
DNAT(Destination Network Address Translation)规则的工作机制正是:
外部用户访问网关的公网 IP → 网关根据规则将请求转发 → 访问内网服务器的私有 IP
DNAT案例步骤:
1.部署server2上的网站
[root@server2 ~]# echo "hello world" > /var/www/html/index.html
2.在server2设置网关,上面是一样的,已经操作过了
[root@server2 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.124.129/24 ipv4.gateway 192.168.229.128 ipv4.dns 114.114.114.114 ipv4.method manual
3.在server1上配置DNAT规则
[root@server1 ~]# iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.124.129:80
3.现在可以在自己的电脑浏览器输入192.168.124.129:8080进行访问了
NAT是网络基础设施层的地址翻译工具,作用在较低的网络层,核心原理是基于连接跟踪的地址翻译,,本质是地址伪装和端口映射,通过网关解决两个问题:“怎么让内网的设备在公网拥有地址”,“怎么把公网访问重定向到内网地址”。主要目的:地址转换、内网访问外网、端口映射外网访问内网。(后面学到LVS的NAT模式可以实现负载均衡)
与代理的区别:代理是应用级的请求转发,工作在高层的应用层,终结原始连接,建立新连接,转发应用层请求/响应,主要目的:访问控制、负载均衡等。
firewalld
firewall-cmd
- --get-default-zone 查询默认区域名称
- --get-zone-of-interface=? 查看当前网卡所在区域,?为网卡名称
- --set-default-zone=? 设置默认区域
- --query-service=? 查询是否允许某个服务协议的流量,默认是public
eg.
[root@localhost ~]#firewall-cmd --zone=public --query-service=ssh
[root@localhost ~]# firewall-cmd --zone=public --query-service=http
- --add-service=?
- --remove-service=?
- --add-port=?/? --add-service=80/tcp
- --list-all --list-port 只列出端口情况 --list-service 只列出服务情况
- --panic-on 切换到紧急模式,一切都访问不了,终端也会卡死
- --panic-off 关闭紧急模式
- --permanent
注意:不能先用--add-service活着--remove-service然后再用--add-port或者--remove-port处理有对应关系的服务和端口,否则这样的操作是无效的,要么一直用service要么一直用的port端口,服务于端口的优先级冲突
- --add-forward-port=?
- 富规则
- 和普通规则的区别:语法类似自然语言,支持复杂条件,优先级更高,可读性高
eg. rule family="ipv4" source address="192.168.1.5" port port="80" protocol="tcp" time start="09:00:00" stop="18:00:00" log prefix="HTTP_ACCESS: " accept 注意:每当写入--permanent,都要重载,包括富规则 eg.1 允许某个ip地址访问 [root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.88.1" port port="80" protocol="tcp" accept' eg.2 限制某个网段的ssh连接次数 [root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.88.0/24" port port="22" protocol="tcp" limit value="3/m" accept' eg.3 将6666端口上的访问转发到22端口 [root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" forward-port port="6666" protocol="tcp" to-port="22"'
计划任务
at
- 安装 yum install -y at
- 启动 systemctl start atd systemctl enable atd
- -l 显示任务列表
- -f 指定包含具体指令的文件
- at now +5min 五分钟执行一个任务
- atq 查看待执行的任务
- atrm 通过序号删除任务
案例:
1)at now +5min
at> echo "hello" > file1
2)at now +1min -f /root/at_job/test.txt
cron
crontab
- 检查cron服务有没有启动 systemctl status crond.service
- -l 列出当前用户的定时任务
- crontab -e (用户级cron任务) 任务存储的位置为/var/spool/cron/用户名
- /etc/crontab (系统级cron任务)系统管理员配置的全局任务 注意:不管是crontab -e还是/etc/crontab 都要严格按照 分 时 日 月 周 命令 进行,后者在/etc/crontab,还要多一个用户名比如root

案例:
vi /etc/crontab
*/2 * * * * echo "hello world" >> file1
日志管理
远程管理日志
在server1上进行的一些操作的日志会远程发送到server2上的一个手动创建的文件里,这个文件的目录写在了rsyslog配置文件中
案例步骤:
1.在server1上,vim /ect/rsyslog.conf
增加内容:“:msg,contains,"sshd" @192.168.229.129:514”
2.重载rsyslog,注意这里需要有一个tab操作,需要有.service systemctl restart rsyslog
3.在server2上,vim /ect/rsyslog.conf
增加内容:
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
:msg,contains,"sshd" /var/log/remote_ssh.log
4.重载和上面相同,systemctl restart rsyslog。service
5.退出登陆server1,ctl+D,然后重新登录
6.在server2检查/var/log/remote_ssh.log 会发现server1的日志
tail -f /var/log/remote_ssh.log
注意:如果server1没有先进行操作的话,server2配置文件里的那个文件应该是不存在的,也没有东西写入,这个时候去找这个文件是找不到的
日志轮转
- 主配置文件:vim /etc/logrotate.conf
- 子配置文件:cat /etc/logrotate.d/syslog






Comments NOTHING