Linux day 06 -day 07 -day 08

发布于 2025-10-01  98 次阅读


目录

  • 数据通信基础
  • 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/DROP 3. 用自定义链的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
A life of freedom is all my ambition
最后更新于 2025-10-01