linux学习(十二)(联网(TCP/IP堆栈,子网掩码,以太网arp/rarp,DHCP,IP路由,DNS解析,网络过滤器,SSH公司,文件传输))
联网
网络是 Linux 环境中的一个重要方面。它使 Linux 系统能够与其他系统连接、交互和共享资源,无论是 Linux、Windows、macOS 还是任何其他作系统。Linux 提供了丰富的工具和命令来管理网络接口、查看其配置详细信息、排查问题和自动执行任务,展示了其稳健性和多功能性。Linux 网络堆栈因其性能、运行大规模和详尽配置的能力以及对各种网络协议的支持而备受推崇。
Linux 采用基于文件的方法进行网络配置,将与网络相关的设置和配置存储在标准文件中,例如 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/,具体取决于 Linux 发行版。
也许与 Linux 系统上的网络相关的最流行的命令之一是以下命令:ifconfig
ifconfig
这将输出有关系统上当前活动的所有网络接口的信息。但是,请注意,它已过时,并被 取代,后者提供了更多特性和功能。ifconfig
ip
Linux 的网络管理就像给房子装电话线和网线,只不过这个"房子"是电脑系统。在 Linux 里,每个网络接口就像墙上不同的网线插口,有的插着网线(有线网卡),有的连着 Wi-Fi(无线网卡)。
管理网络的两种方式:
-
传统方法(老式座机)
用ifconfig
命令就像用老式电话机,简单但功能有限。比如:ifconfig eth0 192.168.1.100 # 给第一个网口设置IP ifconfig eth0 down # 拔掉网线
但就像现在很少人用座机,这个命令逐渐被淘汰了。
-
现代方法(智能手机)
用ip
命令就像用智能手机管理网络,功能强大又方便:ip addr show # 查看所有网络接口 ip route add default via 192.168.1.1 # 设置默认网关 ip link set wlan0 up # 开启无线网卡
为什么推荐用新方法?
好比智能手机能同时处理通话、上网、装APP,而老座机只能打电话。ip
命令可以:
-
同时管理有线/无线/VPN连接
-
查看更详细的网络状态
-
配置复杂的网络规则
网络设置存档处(配置文件)
Linux 把网络配置写在文件里,就像把家里所有电器的使用说明整理成手册:
-
Ubuntu 家的手册放在
/etc/network/interfaces
-
CentOS 家的手册放在
/etc/sysconfig/network-scripts/
修改这些文件就像调整说明书,改完后需要"重启服务"让系统重新读一遍手册:
sudo systemctl restart networking # 大多数系统适用
日常网络小技巧:
-
查网速:
speedtest-cli
(像用测速APP) -
找信号:
iwconfig
(查看Wi-Fi强度,像手机显示信号格) -
修网络:
ping 8.8.8.8
(像打电话测试线路是否通畅)
总结:
Linux 的网络系统就像个智能家居控制中心,既能用简单按钮(基础命令)操作,也能编程设置复杂场景(高级配置)。虽然新手用 ifconfig
够简单,但学会 ip
命令就像从功能机升级到智能机,能玩转更多高级功能。
TCP/IP 协议
TCP/IP(传输控制协议/Internet 协议)构成了 Internet 协议的主干。从本质上讲,它是一组允许两台或多台计算机进行通信的网络协议。在 Linux 环境中,TCP/IP 网络是作系统功能的基本组成部分。它提供了一个平台,用于建立连接并促进两个终端节点之间的数据传输。
TCP/IP 在使主机能够连接相同或不同网络上的其他主机并与之交互方面发挥着至关重要的作用。它由四个层模型组成,包括 Network Interface、Internet、Transport 和 Application 层。了解 TCP/IP、其结构和工作原理对于有效管理 Linux 网络和排除故障至关重要。
以下是在 Linux 中使用 TCP/IP 协议的基本命令:
# To view all active TCP/IP network connections
netstat -at
📦 TCP/IP协议就像现代快递系统
核心比喻: 把网络通信想象成收发快递的过程
🚚 TCP/IP四层快递系统
层级 | 功能类比 | Linux中的体现 | 常见工具 |
---|---|---|---|
应用层 | 写快递单(写明收寄信息) | 浏览器、邮件客户端、SSH | curl、wget、ssh |
传输层 | 选择快递公司(确保包裹到达) | TCP/UDP协议 | netstat、nc(netcat) |
网络层 | 规划运输路线(找最佳路径) | IP协议、路由器 | ping、traceroute、ip route |
链路层 | 卡车实际运输(物理搬运) | 网卡驱动、Wi-Fi/网线 | ethtool、iwconfig |
🔍 TCP vs UDP 快递选择
TCP(顺丰) | UDP(普通快递) | |
---|---|---|
可靠性 | 必须签收确认(三次握手) | 直接投递不确认 |
速度 | 稍慢(要签收流程) | 极速(直接扔快递柜) |
适用场景 | 重要文件传输(网页/邮件) | 实时视频/语音通话 |
🛠️ Linux中的快递管理工具
1️⃣ 查看所有快递进度(网络连接)
netstat -atn # 查看所有TCP连接(数字格式显示更快)
输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.100:22 203.0.113.5:54321 ESTABLISHED
-
Local Address
:你家地址(本机IP和端口) -
Foreign Address
:快递站点地址(远程服务器) -
State
:快递状态(已签收/运输中)
2️⃣ 追踪快递路线(路由追踪)
traceroute www.baidu.com # 显示数据包经过的每个中转站(路由器)
# 简写版(快速查看):
mtr www.baidu.com # 实时更新的路线图
3️⃣ 检查快递是否可达(网络连通性)
ping 8.8.8.8 # 发送测试包裹(默认持续发送,Ctrl+C停止)
🌰 实战场景:网站无法访问
-
检查本地快递站(网卡):
ip addr show eth0 # 查看有线网络配置
iwconfig wlan0 # 查看无线网络信号强度
-
测试快递路线:
ping -c4 www.baidu.com # 发送4个测试包裹
-
抓包分析(快递安检X光):
sudo tcpdump -i eth0 port 80 # 监听经过网卡的网页请求
⚙️ TCP/IP关键机制
-
三次握手(签收确认流程):
-
客户:我要寄快递(SYN)
-
快递站:好的准备接收(SYN-ACK)
-
客户:确认寄出(ACK)
-
-
流量控制(智能装箱):
根据接收方处理能力动态调整发送速度 -
拥塞控制(避开堵车路段):
自动选择最优传输路径
📦 数据包结构示例
想象每个快递包裹都有标准化的包装:
[ 快递单(源/目标IP+端口) ]
[ 内件清单(TCP序列号) ]
[ 易碎标识(校验和) ]
[ 实际货物(应用数据) ]
总结:
TCP/IP协议就像精心设计的智能物流系统,Linux则提供了完整的快递管理工具套装。掌握这些工具,你就能成为网络世界的"物流专家",轻松应对各种网络传输需求!🚀
子网划分
子网划分是 Linux 网络中的关键过程。这种做法涉及将一个网络划分为两个或多个网络,称为子网。子网划分有助于提高网络性能和安全性。在 Linux 中,可以在 Internet 协议 (IP) 寻址方案的上下文中管理子网划分,这对于组织和管理网络内的 IP 地址、防止 IP 冲突和有效利用 IP 地址范围至关重要。在大型复杂的 Linux 网络环境中,这种技术非常有价值,因为 IP 地址管理可能会变得非常复杂。
通常,在 Linux 中使用以下命令进行子网划分:
# Display current routing table
$ route -n
# Add a new subnet
$ route add -net xxx.xxx.xxx.x/xx gw yyy.yyy.yyy.y
请将 替换为所需的子网地址和网络掩码,并替换为子网的预期默认网关。xxx.xxx.xxx.x/xx
yyy.yyy.yyy.y
🏘️ 子网划分就像小区规划
核心概念: 把一个大社区(网络)划分成多个小区(子网),每个小区有自己的物业管理和出入口
🌍 为什么需要划分小区?
-
避免拥堵:500户的大社区只有一个大门会堵车 → 分成5个100户的小区各有出入口
-
提升安全:每个小区独立门禁,外人不能随意串门
-
精细管理:物业可以针对不同小区制定不同规则(如A区24小时巡逻,B区晚10点锁门)
🔢 小区地址规划(CIDR表示法)
假设整个社区地址是 192.168.0.0/16
(65534户):
原始大社区:192.168.0.0/16
└── 子网1:192.168.1.0/24 (254户)
└── 子网2:192.168.2.0/24
└── 子网3:192.168.3.0/24
-
/24
就像小区门牌号规则:前三位表示小区号(192.168.1),最后一位是户号(1-254) -
/16
则是整个社区的前两位固定(192.168),后两位自由分配
🛠️ Linux中的物业管理系统(命令)
1️⃣ 查看小区分布图(路由表)
ip route show
# 输出示例:
# 192.168.1.0/24 via 192.168.0.1 dev eth0 # 子网1通过网关0.1进出
# 192.168.2.0/24 via 192.168.0.2 dev eth1 # 子网2走另一个网关
2️⃣ 新建一个小区(添加子网)
sudo ip route add 192.168.3.0/24 via 192.168.0.3
# 解释:新增子网192.168.3.x,所有进出走网关192.168.0.3
# 解释:新增子网192.168.3.x,所有进出走网关192.168.0.3
3️⃣ 设置小区出入口(默认网关)
sudo ip route add default via 192.168.0.254 # 整个社区的默认出口
🌰 实战场景:公司网络规划
-
总部分配地址:
10.10.0.0/16
-
部门划分:
-
技术部:
10.10.1.0/24
(254个工位) -
市场部:
10.10.2.0/24
-
财务部:
10.10.3.0/24
(设置更严格防火墙)
-
-
Linux路由配置:
# 技术部子网配置
sudo ip link set eth0 up
sudo ip addr add 10.10.1.1/24 dev eth0 # 设置技术部网关IP
# 允许跨部门访问
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # 允许技术部访问市场部
📝 子网规划备忘录
参数 | 说明 | 类比 |
---|---|---|
IP地址 | 192.168.1.100 | 小区A栋100室 |
子网掩码 | 255.255.255.0(/24) | 小区门牌编号规则 |
网关 | 192.168.1.1 | 小区大门地址 |
广播地址 | 192.168.1.255 | 小区广播喇叭 |
⚠️ 注意事项
-
避免地址冲突:就像不能有两个1栋101室
-
预留管理地址:通常把xxx.xxx.xxx.1作为网关
-
考虑未来发展:技术部可能扩员,预留连续子网段
💡 快速计算工具
-
CIDR计算器:https://www.ipaddressguide.com/cidr
-
Linux自带计算:
ipcalc 192.168.1.0/24
# 输出包含网络地址、广播地址、可用IP范围等
总结: 子网划分就像城市规划,合理分区后网络更安全高效。掌握这些工具,你就能成为Linux世界的"网络规划师"! 🏗️🔧
以太网、ARP 和 RARP
Linux 因其强大、可定制和开源的性质而成为流行的网络作系统选择。了解 Linux 中的网络需要理解各种协议和工具。这一领域的三个关键组成部分包括以太网、ARP(地址解析协议)和 RARP(反向地址解析协议)。
- 以太网:这是安装最广泛的 LAN(局域网)技术,允许设备在局域网内进行通信。
- ARP:顾名思义,它提供地址解析,将 IP 地址转换为 MAC(媒体访问控制)地址,促进更直接的网络通信。
- RARP:它是反向地址解析协议,其工作方式与 ARP 相反。它将 MAC 地址转换为 IP 地址,这在计算机知道其 MAC 地址但需要找出其 IP 地址的情况下非常有用。
了解这些组件对于诊断和管理 Linux 中的网络问题是必不可少的。
📡 以太网、ARP、RARP 就像小区快递系统
核心比喻: 把局域网通信想象成小区里的快递配送
🏘️ 以太网:小区的基础道路
-
功能:就像小区里的柏油路和路灯
-
特点:
-
规定每家每户的门怎么开(网络接口标准)
-
确定快递车宽度(数据帧大小:1500字节)
-
设置道路限速(传输速率:100M/1G/10Gbps)
-
-
Linux查看方式:
ethtool eth0 # 查看网卡详细信息
📦 ARP:快递员的地址簿(IP → MAC)
场景:快递员知道3栋2单元(IP地址),但不知道具体哪扇门(MAC地址)
-
工作流程:
-
快递员在小区广播站喊:"3栋2单元101的住户,请把你的门牌亮出来!"
-
正确住户回应:"我是MAC地址AA:BB:CC:DD:EE:FF"
-
快递员记下对应关系,下次直接送货
-
-
Linux操作:
arp -a # 查看当前记录的地址对应表(ARP缓存) ip neigh flush dev eth0 # 清空某个网卡的地址记录
📮 RARP:反向查号台(MAC → IP)
场景:住户知道自家门牌(MAC地址),但不知道小区编号(IP地址)
(注:这个服务现在基本被DHCP取代,就像现在都用手机查地址,不用传统查号台)
-
历史用途:
-
无盘工作站启动时获取IP
-
旧式网络设备配置
-
-
替代方案:
dhclient eth0 # 通过DHCP自动获取IP地址
🌰 实战场景解析
问题:电脑A(192.168.1.100) ping 电脑B(192.168.1.101)
通信过程:
-
查门牌:A通过ARP广播获取B的MAC地址
-
写快递单:
源地址:A的MAC(AA:BB:CC:DD:EE:FF) 目标地址:B的MAC(11:22:33:44:55:66)
-
上路运输:以太网负责把数据帧送达
-
回执确认:B收到后通过ARP缓存直接回复
🛡️ 安全隐患:ARP欺骗(快递员被假冒)
攻击方式:黑客广播虚假ARP响应:"192.168.1.101的MAC是XX:XX:XX:XX"
防御措施:
# 设置静态ARP条目(锁定真实地址)
sudo arp -s 192.168.1.1 00:11:22:33:44:55
🔧 网络调试技巧
问题现象 | 排查命令 | 解释 |
---|---|---|
能ping通IP但无法上网 | arp -an | 检查网关MAC地址是否正确 |
网络时断时续 | ip -s link show eth0 | 查看网卡错误包和丢包统计 |
怀疑ARP欺骗 | arpwatch | 监控ARP表变化并发送警报邮件 |
总结:
-
以太网是网络世界的"道路基建"
-
ARP是确保快递准确送达的"智能导航"
-
RARP是过时的"纸质电话簿",已被现代DHCP取代
掌握这三者的关系,就像拥有了网络世界的"物流管理秘籍",能快速定位和解决各种局域网通信问题! 🚚🔧
DHCP
动态主机配置协议 (DHCP) 是任何网络的关键组件。在 Linux 网络中,它用于在网络内动态分配 IP 地址。
DHCP 服务器有效地管理 IP 地址和与之相关的信息,确保每台客户端计算机都获得唯一的 IP 和所有正确的网络信息。
在 Linux 中,可以使用终端命令配置和管理 DHCP。这涉及安装 DHCP 服务器软件、编辑配置文件和管理服务器的服务。
传统的 DHCP 服务器应该有一个静态 IP 地址,以有效地管理 IP 分配。Linux 中的 DHCP 还处理您的网络可能需要的 DNS 和其他相关数据。
以下是在基于 Debian 的 Linux 中安装 DHCP 服务器的基本命令示例:
sudo apt-get install isc-dhcp-server
安装过程完成后,DHCP 服务器的所有配置都在位于配置文件中完成,可以使用任何文本编辑器对其进行编辑。/etc/dhcp/dhcpd.conf
🏠 DHCP 就像智能租房中介
核心概念: 自动为新入住的租客(设备)分配房间(IP地址),并告知小区规则(网络配置)
📜 DHCP 服务流程(四步签约)
-
租客找房(Discover)
新设备大喊:"我是MAC:AA:BB:CC:DD:EE,这里有中介吗?我要租房!" -
中介推荐(Offer)
DHCP服务器回应:"10.0.0.100 这个房间给你,租期24小时,物业在10.0.0.1" -
确认签约(Request)
设备确认:"我就要这间10.0.0.100!" -
交钥匙(Acknowledge)
服务器:"签约成功!这是你的钥匙(IP配置),记得每天续约"
🛠️ Linux 搭建中介公司(DHCP服务器)
1️⃣ 安装中介公司系统
sudo apt install isc-dhcp-server # Debian/Ubuntu
sudo yum install dhcp # CentOS/RHEL
2️⃣ 编写租房规则(配置文件)
编辑 /etc/dhcp/dhcpd.conf
:
# 小区基本信息
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.200; # 可出租房间号范围
option routers 10.0.0.1; # 物业地址(网关)
option domain-name-servers 8.8.8.8; # 小区导航员(DNS)
default-lease-time 86400; # 默认租期24小时(秒)
max-lease-time 172800; # 最长租期48小时
host printer { # 固定保留房间
hardware ethernet AA:BB:CC:DD:EE:FF;
fixed-address 10.0.0.50;
}
}
3️⃣ 开业运营
sudo systemctl start isc-dhcp-server # 启动服务
sudo systemctl enable isc-dhcp-server # 设置开机自启
📱 租客入住(客户端获取IP)
sudo dhclient eth0 # 手动申请IP(就像新租客找中介)
ip addr show eth0 # 查看获得的"房间号"
🔍 中介工作日志
tail -f /var/log/syslog | grep dhcpd # 实时查看租房记录
cat /var/lib/dhcp/dhcpd.leases # 查看所有租约历史
🌰 实际应用场景:办公室网络
-
需求分析:
-
50台办公电脑自动获取IP
-
3台打印机需要固定IP
-
访客网络单独分配IP段
-
-
配置方案:
# 员工网络
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100-192.168.1.200;
option routers 192.168.1.254;
}
# 访客网络
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100-192.168.2.150;
option routers 192.168.2.254;
max-lease-time 3600; # 访客限时1小时
}
# 打印机固定IP
host HP-LaserJet {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.88;
}
⚠️ 注意事项
常见问题 | 解决方案 | 类比解释 |
---|---|---|
IP地址耗尽 | 扩大range 范围 | 增加可出租房间数量 |
租期太短频繁掉线 | 调整default-lease-time | 延长租房合同期限 |
非法中介干扰 | 关闭未授权DHCP服务 | 打击黑中介 |
重要设备IP变化 | 使用fixed-address 保留地址 | VIP客户永久保留房间 |
💡 高级技巧
-
跨网段服务:配置DHCP中继代理
# 在中继服务器执行 sudo apt install dhcp-relay
-
动态DNS更新:自动同步主机名和IP
ddns-update-style interim;
-
租约预留:按MAC地址分配特定IP
host CEO-PC { hardware ethernet AA:BB:CC:DD:EE:FF; fixed-address 192.168.1.66; }
总结: DHCP就像智能物业管理系统,让设备可以"即插即用"接入网络。掌握这些配置技巧,你就能成为Linux网络世界的"金牌房产中介"! 🏆🔧
IP 路由
Linux 中的 IP 路由是指在 Linux作系统中为网络接口设置路由表和配置网络路由的过程。内核负责处理此任务,其中涉及选择将网络数据包发送到网络上预期目的地的路径。
此任务使用各种命令行工具和网络配置文件执行。Linux 中用于网络配置的主要命令行工具曾经是 ,但现在它已大部分被 command 取代。ifconfig
ip
例如,要在 Linux 中查看路由表,请使用以下命令:
$ ip route show
此命令返回内核已知的所有路由的列表。
🚦 IP路由就像城市快递分拣系统
核心概念: Linux系统相当于一个智能快递分拣中心,路由表就是它的分拣规则手册,决定每个包裹(数据包)该走哪条运输路线
📦 快递分拣流程(数据包路由)
-
包裹到达:收到寄往
北京朝阳区奥运村1号
的包裹(目标IP:192.168.1.100
) -
查分拣手册(路由表):
-
先看是否同城快递(同一子网)
-
不是则找跨省专线(默认网关)
-
-
选择最优路线:
192.168.1.0/24 dev eth0 # 朝阳区件走1号分拣口(eth0网卡) default via 10.0.0.1 # 其他件统一发往华北中转站(默认网关)
📋 分拣手册管理(路由表操作)
查看当前分拣规则
ip route show
# 输出示例:
# default via 192.168.1.1 dev eth0 # 默认走1号门,发往192.168.1.1
# 10.8.0.0/24 dev tun0 proto static # 所有10.8.0.x的件走VPN通道
# 192.168.2.0/24 via 192.168.1.254 # 朝阳区件转给隔壁分拣中心
添加临时专线(临时路由)
sudo ip route add 172.16.0.0/16 via 10.0.0.2 dev eth1
# 解释:所有寄往172.16.x.x的包裹,走eth1通道,交给10.0.0.2中转
删除错误路线
sudo ip route del 172.16.0.0/16 # 取消之前的专线设置
永久修改分拣手册(持久化配置)
编辑 /etc/network/interfaces
(Debian系):
up ip route add 172.16.0.0/16 via 10.0.0.2
🌰 实际场景:公司多网络环境
网络结构:
-
内网:
192.168.1.0/24
通过eth0
连接 -
云服务器:
10.0.0.0/16
通过eth1
网关10.0.0.1
-
VPN专线:
172.16.1.0/24
通过tun0
配置命令:
# 添加云服务器路由
sudo ip route add 10.0.0.0/16 via 10.0.0.1 dev eth1
# 设置VPN专用通道
sudo ip route add 172.16.1.0/24 dev tun0
# 设置默认出口(都走内网)
sudo ip route add default via 192.168.1.1
🔍 快递追踪工具(排障命令)
问题现象 | 排查命令 | 作用 |
---|---|---|
无法访问某网站 | traceroute www.baidu.com | 显示包裹经过的每个中转站 |
分拣规则是否生效 | ip route get 10.0.0.5 | 模拟查询某个地址的路由路径 |
网络突然中断 | ping 8.8.8.8 | 测试基础网络连通性 |
查看实时运输情况 | tcpdump -i eth0 | 抓包分析数据流向 |
⚠️ 常见配置误区
-
路由冲突:多条规则匹配同一地址范围
-
网关不可达:网关地址不在同一子网
-
网卡未启用:路线配置了但分拣口(网卡)没开
ip link set eth1 up # 开启eth1分拣口
💡 高级技巧
-
策略路由:根据来源地址选择不同路线
ip rule add from 192.168.1.100 lookup 100 # 特殊客户走专用路线
-
多默认网关:实现网络冗余
ip route add default via 192.168.1.1 metric 100 ip route add default via 10.0.0.1 metric 200 # 主备网关
总结: 掌握Linux路由就像成为快递分拣专家,能精准控制每个数据包的流向。记住这个口诀:查表用show
,加路由用add
,删路由用del
,排障先ping
再traceroute
! 🚚🔧
🚦 这段代码就像设置备用逃生通道
代码解释:
ip route add default via 10.0.0.1 metric 200
🏢 用大楼出口比喻
想象你的公司有两道大门:
-
主大门(metric 100):宽敞明亮,日常使用
-
备用门(metric 200):平时关闭,主门故障时启用
📝 逐部分解析
代码部分 | 比喻解释 | 作用说明 |
---|---|---|
default | 所有不知道去哪的快递 | 处理所有非指定路线的网络流量 |
via 10.0.0.1 | 备用门的地址 | 数据包通过这个网关转发 |
metric 200 | 备用门的优先级标签 | 数字越大优先级越低(200 > 100) |
🔄 工作场景
-
日常情况:
-
主网关(metric 100)处理所有流量
-
备用网关处于待命状态
-
-
主门故障时:
-
系统自动切换使用备用网关
-
就像火灾时自动打开应急通道
-
-
恢复时:
-
主网关恢复后流量自动切回
-
类似消防演习结束,员工回归主通道
-
🛠️ 配置示例
假设公司有两个网络出口:
# 主出口(电信宽带)
ip route add default via 192.168.1.1 metric 100
# 备用出口(移动宽带)
ip route add default via 10.0.0.1 metric 200
💡 使用技巧
-
查看当前出口:
ip route show default # 输出:default via 192.168.1.1 metric 100
-
测试切换效果:
ping www.baidu.com # 拔掉主网关网线后,观察ping是否继续通
-
永久生效配置:
将命令写入/etc/network/interfaces
文件
总结: 这个命令就像给你的网络装上智能导航系统,当主路拥堵或封路时,自动选择备用路线,保证网络永不掉线! 🚧🔄🚀
Linux 上联网中的 DNS 解析
域名系统 (DNS) 是一种去中心化的系统,用于将主机名转换为 IP 地址,使用户更容易访问网站,而无需记住特定的数字 IP 地址。因此,DNS 解析是 Linux 中联网的一个关键方面。
在 Linux 系统上,当应用程序需要连接到某个 URL 时,它会咨询 DNS 解析器。此解析器使用 file 与 DNS 服务器通信,然后 DNS 服务器将 URL 转换为 IP 地址以建立网络连接。/etc/resolv.conf
以下命令用于查询 DNS 和获取 IP 地址:
nslookup www.example.com
或使用 dig 命令:
dig www.example.com
充分了解 DNS 解析过程为 Linux 系统上的网络故障排除和 Web 服务器设置等任务提供了坚实的基础。
📞 DNS解析就像智能电话查号系统
核心概念: 把访问网站想象成打电话,DNS就是帮你通过名字查号码(IP地址)的智能服务
📚 电话查号流程(DNS解析步骤)
-
翻通讯录(检查本地记录)
-
先查看
/etc/hosts
文件(私人通讯录)
cat /etc/hosts # 示例:192.168.1.100 my-server # 手动记录的联系人
-
-
拨打查号台(联系DNS服务器)
-
查号台号码写在
/etc/resolv.conf
(查号热线簿)
cat /etc/resolv.conf # nameserver 8.8.8.8 # 谷歌查号台 # nameserver 114.114.114.114 # 114查号台
-
-
智能转接(递归查询)
-
本地DNS查不到时,自动联系根DNS→顶级DNS→权威DNS,就像:
-
查号台 → 省级总台 → 市级分台 → 街道服务站
-
-
-
记录常用号码(DNS缓存)
-
系统自动记住最近查过的号码,下次秒查
sudo systemd-resolve --statistics # 查看缓存情况
-
🛠️ 查号工具对比
工具 | 特点 | 适用场景 | 示例 |
---|---|---|---|
nslookup | 基础查号(老式电话) | 快速简单查询 | nslookup www.baidu.com |
dig | 专业查号(带通话详单) | 排查复杂问题 | dig +trace www.baidu.com |
host | 极简查号(快速拨号) | 只需IP结果 | host www.baidu.com |
🌰 实战场景:网站打不开
-
检查是否号码有误(DNS解析问题):
dig www.baidu.com +short # 返回空说明DNS故障
-
更换查号台(修改DNS服务器):
echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf # 改用阿里DNS
-
清除错误记忆(刷新DNS缓存):
sudo systemd-resolve --flush-caches # 清空错误号码记录
⚠️ 常见问题排查
现象 | 检查步骤 | 修复方法 |
---|---|---|
能ping通IP但打不开网站 | cat /etc/resolv.conf | 修改DNS服务器地址 |
部分网站无法访问 | dig @8.8.8.8 网站 | 检查是否DNS污染,使用DoH加密DNS |
DNS查询缓慢 | time dig www.baidu.com | 更换更快的DNS服务器 |
💡 高级技巧
-
加密查号(DNS over HTTPS):
sudo apt install cloudflare-dns # 安装加密DNS工具
-
本地模拟号码簿(DNS劫持测试):
echo "127.0.0.1 www.test.com" | sudo tee -a /etc/hosts # 将测试域名指向本机
-
查看详细通话记录(完整解析过程):
dig +trace www.baidu.com # 显示从根DNS开始的完整查询路径
总结: DNS就像网络世界的智能查号台,掌握这些技巧,你就能像资深话务员一样精准处理各种"查号"问题! 📞🔧
网络过滤器
Netfilter 是 Linux 中包含的一个强大工具,它提供用于作和更改网络数据包的功能。它本质上是一个框架,充当内核和数据包之间的接口,允许对传输中的数据包进行作和转换。
Netfilter 的主要应用是开发防火墙系统和管理网络地址转换 (NAT)。在 Linux 中,netfilter 非常有价值,因为它提供了广泛的应用程序,从流量控制、数据包修改、日志记录和网络入侵检测。
netfilter 的结构允许将自定义函数(通常称为钩子)插入到内核的网络堆栈中。这些钩子可以在各个阶段作或检查数据包,例如预路由、本地输入、转发、本地输出和后路由。
与 netfilter 结合使用的常用工具是 iptables,它提供了一种机制来配置 Netfilter 框架提供的内核中的表。
以下是使用 iptables 和 netfilter 模块创建简单防火墙规则的示例:
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -m netfilter --netfilter-name example --action drop
在此命令中,'-A INPUT' 向 'INPUT' 链添加新规则。“-i eth0”指定网络接口,“-s 192.168.0.0/24”指定规则的 IP 地址范围。“-m netfilter”正在调用 netfilter 模块,“—netfilter-name example”用于命名规则,“—action drop”用于指定如何处理匹配的数据包(在本例中,丢弃它们)。
🛡️ Netfilter 就像智能快递分拣中心
核心概念: 把网络数据包比作快递包裹,Netfilter 是分拣中心的智能控制系统,决定每个包裹的去向
🏗️ 分拣中心架构(Netfilter 工作流程)
1️⃣ 五大分拣关卡(Hook Points)
PREROUTING → INPUT → FORWARD → OUTPUT → POSTROUTING
-
PREROUTING:包裹刚进分拣中心(刚到达网卡)
-
INPUT:本机自己收的快递(发给本机的数据)
-
FORWARD:需要转发的快递(路由器功能)
-
OUTPUT:本机寄出的快递(本机发出的数据)
-
POSTROUTING:包裹即将出分拣中心(离开网卡前)
📦 分拣规则手册(iptables)
iptables
是分拣员的操作手册,包含三个主要货架(表):
表名 | 功能 | 常见操作 |
---|---|---|
filter | 安全检查(查危险品) | 允许/拒绝数据包 |
nat | 地址转换(改快递单) | 端口转发、共享上网 |
mangle | 包裹改造(贴标签/改包装) | 修改TTL、设置QoS标记 |
🛠️ 分拣员日常操作(常用命令)
1️⃣ 设置安检规则(防火墙)
# 禁止来自192.168.1.100的快递
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
# 允许访问80端口的快递(开放Web服务)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2️⃣ 修改快递单(NAT转换)
# 共享上网(把内网快递改成公网地址)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 端口转发(把寄到公网8080的件转给内网80)
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
3️⃣ 查看分拣记录
sudo iptables -L -v -n # 查看当前规则(带流量统计)
🌰 实战场景:家庭路由器配置
需求:
-
禁止孩子电脑(192.168.1.100)访问游戏网站
-
允许外部访问家庭NAS的80端口
-
实现手机通过公网IP访问家庭摄像头
配置命令:
# 封禁游戏网站
sudo iptables -A FORWARD -s 192.168.1.100 -d 游戏网站IP -j DROP
# 开放NAS访问
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 摄像头端口映射
sudo iptables -t nat -A PREROUTING -p tcp --dport 554 -j DNAT --to 192.168.1.200:554
⚠️ 重要注意事项
常见错误 | 解决方案 | 类比解释 |
---|---|---|
规则顺序错误 | 使用 -I 插入到指定位置 | 安检流程顺序不能错 |
忘记保存规则 | iptables-save > /etc/iptables.rules | 下班前保存分拣手册 |
NAT配置不生效 | 检查 net.ipv4.ip_forward=1 | 打开分拣中心的传送带开关 |
💡 高级技巧
-
限速规则(控制包裹流量):
sudo iptables -A FORWARD -m limit --limit 100/s -j ACCEPT
-
连接追踪(记录快递轨迹):
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-
日志记录(保存可疑包裹记录):
sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH访问: "
总结:
Netfilter + iptables 就像智能物流管理系统:
-
PREROUTING:快递卸货扫描
-
INPUT:公司自用包裹分拣
-
FORWARD:中转包裹处理
-
OUTPUT:公司寄出包裹检查
-
POSTROUTING:快递装车前的最后检查
掌握这些配置,你就能成为网络世界的"物流总管",精确控制每个数据包的命运! 📦🔧
SSH (安全外壳)
在 Linux 网络领域,Secure Shell (SSH) 起着至关重要的作用。SSH 是一种加密网络协议,主要用于两台联网计算机之间的安全数据通信、远程命令行登录、远程命令执行和其他安全网络服务。SSH 强调数据传输过程中数据的机密性、完整性和安全性,提供了一种比 Telnet 等不安全的远程访问方法更安全的远程访问方法。
鉴于它的重要性和广泛使用,对于任何希望浏览 Linux作系统和有效管理网络的人来说,对其功能有深入的了解都是必不可少的。
以下是使用 SSH 从本地计算机连接到远程服务器的示例:
ssh username@server_ip_address
在上面的命令中,'username' 代表远程用户帐户名,'server_ip_address' 是您尝试访问的远程服务器的 IP 地址。输入此命令后,系统将提示您输入指定用户帐户的密码。验证成功后,您将登录到远程 Linux 服务器。
🔒 SSH 就像快递员护送机密文件
核心概念: SSH 是网络世界的"加密特快专递",确保你的远程操作像运送机密文件一样安全
📦 传统快递 vs SSH加密快递
Telnet(普通快递) | SSH(武装押运) | |
---|---|---|
安全性 | 明信片传输(内容全裸奔) | 文件锁在防弹保险箱(加密传输) |
验证方式 | 只检查收件人地址(无身份验证) | 快递员要核对身份证+密码(双重验证) |
典型场景 | 内部安全网络 | 互联网等不安全环境 |
🛠️ SSH 快递服务三大功能
1️⃣ 远程控制(操控远方电脑)
ssh zhangsan@203.0.113.5 # 登录到203.0.113.5服务器
# 输入密码后就像坐在远程电脑前操作
2️⃣ 加密传文件(安全文件传输)
scp report.pdf zhangsan@203.0.113.5:/home/zhangsan # 加密发送文件
# 就像把文件封入保险箱快递
3️⃣ 安全隧道(突破网络限制)
ssh -L 8080:internal.site:80 zhangsan@203.0.113.5
# 通过SSH服务器访问内部网站(像建立秘密通道)
🔑 更安全的钥匙认证(代替密码)
-
生成专属钥匙对:
ssh-keygen -t ed25519 # 生成保险箱钥匙(密钥对) # 私钥(自己保管) + 公钥(交给快递公司)
-
安装公钥到服务器:
ssh-copy-id zhangsan@203.0.113.5 # 把公钥存到服务器保险柜
-
无密码登录:
ssh zhangsan@203.0.113.5 # 现在用钥匙不用输密码
🌰 实战场景:远程维护服务器
-
登录生产服务器:
ssh admin@prod-server -p 2222 # 指定非默认端口
-
执行维护命令:
sudo systemctl restart nginx # 重启Web服务
-
传输日志文件:
scp admin@prod-server:/var/log/nginx/error.log ./ # 安全下载日志
⚠️ 安全注意事项
风险点 | 防护措施 | 类比解释 |
---|---|---|
密码被暴力破解 | 禁用密码登录,只用密钥 | 保险箱换指纹锁 |
首次连接被劫持 | 核对服务器指纹(首次连接提示) | 快递员出示工作证 |
私钥泄露 | 设置密钥密码 + 定期更换 | 给保险箱钥匙再加密码锁 |
💡 高级技巧
-
多设备同步配置:创建
~/.ssh/config
文件Host myserver HostName 203.0.113.5 User zhangsan Port 2222 IdentityFile ~/.ssh/work_key
之后只需
ssh myserver
即可登录 -
快速文件传输:
rsync -avz -e ssh ./project/ zhangsan@server:/backup/ # 增量同步
-
远程图形界面:
ssh -X zhangsan@server gedit # 打开远程服务器的文本编辑器
总结: SSH 就像网络世界的瑞士银行级安保系统,掌握它,你就能:
-
🛡️ 安全远程操控千里之外的服务器
-
📁 机密文件传输不怕被偷窥
-
🚇 突破网络限制建立加密隧道
成为真正的网络安全特工! 🔐💻
网络下的 Linux 文件传输
在 Linux 中,文件传输是通过网络连接将文件从一台计算机复制或移动到另一台计算机的作。对于需要能够在系统或网络之间共享文件的系统管理员和最终用户来说,此概念至关重要。
Linux 为基于网络的文件传输提供了多个命令行工具和应用程序。这些工具支持各种标准协议,例如 FTP、HTTP、SCP、SFTP 和 NFS。一些最著名的文件传输命令包括 、 和 .scp
rsync
wget
例如,将文件从本地计算机传输到远程服务器时,可以按如下方式使用该命令:scp
scp /path/to/local/file username@remote:/path/to/destination
此命令会将文件复制到指定的远程系统。
了解并有效地使用这些工具可以简化、更轻松、更安全的网络文件共享任务。
📦 Linux文件传输就像选择快递服务
核心概念: 根据需求选择不同的"快递公司"(传输协议),安全高效地运送文件(数据)
🚚 常用快递公司对比
工具/协议 | 特点 | 适用场景 | 示例 |
---|---|---|---|
scp | 加密运输(SSH通道) | 快速安全传小文件 | scp report.txt user@server:/data |
rsync | 智能同步(只传变化部分) | 定期备份/大文件同步 | rsync -avz ./backup/ user@server:/backup |
wget | 网页下载(支持断点续传) | 从网站直接下载文件 | wget https://example.com/file.iso |
sftp | 交互式加密传输(类似ftp) | 需要浏览远程目录时 | sftp user@server → get file.txt |
curl | 多功能传输(支持多种协议) | API调用/测试网页服务 | curl -O https://example.com/image.jpg |
🛠️ 四大快递服务详解
1️⃣ 加密急件(scp)
# 发送本地文件到服务器(像加密封装快递)
scp -P 2222 secret.doc user@203.0.113.5:/home/user
# 从服务器取回文件(带进度条)
scp -r user@server:/data/logs ./ # -r表示传送整个文件夹
2️⃣ 智能物流(rsync)
# 同步本地文件夹到服务器(只传变化部分)
rsync -avz --progress ./photos/ user@server:/backup/photos
# -a:存档模式 -v:显示详情 -z:压缩传输
3️⃣ 网页直采(wget)
# 下载整个网站(像自动搬运机器人)
wget --mirror --convert-links https://example.com
# 断点续传(快递中途断线继续送)
wget -c https://iso.debian.org/debian.iso
4️⃣ 安全货仓(sftp)
sftp user@203.0.113.5 # 登录后进入交互模式
sftp> put local_file.txt # 上传文件
sftp> get remote_file.zip # 下载文件
sftp> ls -l # 浏览远程目录
🌰 实际场景选择指南
场景1:紧急传送敏感文件
👉 选 scp:简单快捷,加密传输
scp -C patient_data.csv doctor@hospital:/records # -C启用压缩
场景2:每日备份网站数据
👉 选 rsync:智能同步节省流量
rsync -avz --delete /var/www/ admin@backup:/web_backup # --delete同步删除
场景3:下载Linux系统镜像
👉 选 wget:支持大文件断点续传
wget -c https://ubuntu.com/22.04.iso # -c 断点续传
场景4:管理远程文件系统
👉 选 sftp:交互式操作更直观
sftp -P 2222 dev@203.0.113.5 # 指定端口连接
⚠️ 安全运输须知
-
加密优先:总选scp/sftp代替普通ftp
-
密钥认证:用SSH密钥代替密码更安全
rsync -e "ssh -i ~/.ssh/id_rsa" # 指定密钥文件
-
权限控制:传输后检查文件权限
chmod 600 secret.txt # 设置只有所有者可读写
💡 高级技巧
-
加速传输:
rsync -avz --bwlimit=1000 ./large_files/ user@server:/data # 限速1MB/s
-
后台传输:
nohup scp bigfile.img user@server:/data & # 断开SSH仍继续传输
-
目录对比:
rsync -avn --delete ./local/ user@server:/remote/ # -n模拟运行,显示差异
总结: 掌握这些文件传输工具,就像拥有一个智能物流中心,能根据需求自动选择最合适的快递服务! 🚛💨