《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。

文章目录
- 一、本文面试题目录
- 76. `ifconfig` 和 `ip` 命令的区别是什么?如何查看和配置网络接口?
- 77. 如何查看系统的路由表?`route` 命令和 `ip route` 命令的使用方法?
- 78. `ping` 命令的作用是什么?`-c`、`-i` 选项的含义是什么?如何检测与目标主机的连通性?
- 79. `traceroute` 和 `mtr` 命令的作用是什么?如何排查网络路径中的故障?
- 80. `netstat` 和 `ss` 命令的作用是什么?如何查看系统的网络连接状态?
- 81. 如何查看系统的DNS配置?`/etc/resolv.conf` 文件的作用是什么?
- 82. `host` 和 `dig` 命令的作用是什么?如何查询域名对应的IP地址?
- 83. 什么是防火墙?Linux中常用的防火墙工具是什么?(如 `iptables`、`firewalld`)
- 84. `iptables` 的基本规则组成是什么?如何添加一条允许SSH连接的规则?
- 85. `firewalld` 与 `iptables` 的区别是什么?如何开放80端口?
- 86. 什么是NAT(网络地址转换)?`iptables` 如何配置SNAT和DNAT?
- 87. 如何查看系统的网络带宽使用情况?(如 `iftop`、`nload`)
- 88. 什么是SSH?如何通过SSH远程连接Linux服务器?`ssh` 命令的常用选项有哪些?
- 89. 如何配置SSH密钥登录?相比密码登录有什么优势?
- 90. `scp` 和 `sftp` 命令的作用是什么?如何在服务器之间传输文件?
- 91. 什么是端口?如何查看某个端口被哪个进程占用?(如 `lsof -i :端口`)
- 92. 什么是网关(Gateway)?它在网络通信中起到什么作用?
- 93. 如何临时和永久修改主机名?(`hostname` 命令和 `/etc/hostname` 文件)
- 94. `/etc/hosts` 文件的作用是什么?它与DNS的关系是什么?
- 95. 什么是DHCP?如何配置Linux系统使用DHCP获取IP地址?
 
 
- 二、120道Linux面试题目录列表
一、本文面试题目录
76. ifconfig 和 ip 命令的区别是什么?如何查看和配置网络接口?
- 区别说明: - ifconfig:传统传统网络配置命令,属于- net-tools工具包,功能有限,部分Linux发行版已弃用。
- ip:新一代新一代网络管理命令,属于- iproute2工具包,功能更强大,支持现代网络技术(如VLAN、隧道),是- ifconfig的替代者。
 
- 查看网络接口: - # ifconfig 方式(查看所有激活的接口) ifconfig ifconfig eth0 # 查看指定接口 # ip 方式(推荐) ip addr show # 查看所有接口详细信息 ip link show # 查看接口链路状态
- 配置网络接口: - # 临时设置IP地址(重启失效) # ifconfig 方式 ifconfig eth0 192.168.1.100 netmask 255.255.255.0 ifconfig eth0 up # 激活接口 # ip 方式 ip addr add 192.168.1.100/24 dev eth0 ip link set eth0 up # 激活接口 # 临时设置网关 route add default gw 192.168.1.1 # ifconfig配套命令 ip route add default via 192.168.1.1 # ip方式
- 永久配置: 
 需修改配置文件(因发行版而异):- Debian/Ubuntu:/etc/network/interfaces
- CentOS/RHEL:/etc/sysconfig/network-scripts/ifcfg-eth0
 
- Debian/Ubuntu:
77. 如何查看系统的路由表?route 命令和 ip route 命令的使用方法?
- 路由表作用: 
 记录网络数据包的转发路径,决定数据从源主机到目标主机的传输路线。
- 查看路由表: - # route 命令(传统方式) route -n # -n 表示显示IP地址而非主机名 # ip route 命令(推荐,功能更全面) ip route show ip route list
- 路由表主要字段说明: - Destination/- default:目标网络或默认路由(所有未匹配的流量)
- Gateway:网关IP地址(数据转发的下一跳)
- Genmask:子网掩码
- Iface:出口网络接口
 
- 添加/删除路由: - # 添加路由(到10.0.0.0/24网段,通过eth0接口和网关192.168.1.1) route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0 ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0 # 删除路由 route del -net 10.0.0.0 netmask 255.255.255.0 ip route del 10.0.0.0/24
- 设置默认路由: - route add default gw 192.168.1.1 ip route add default via 192.168.1.1
78. ping 命令的作用是什么?-c、-i 选项的含义是什么?如何检测与目标主机的连通性?
- 作用: 
 通过发送ICMP Echo Request数据包并等待回应,检测与目标主机的网络连通性,评估网络延迟和丢包率。
- 常用选项: - -c <次数>:指定发送数据包的次数(默认无限次)
- -i <间隔秒数>:指定数据包发送间隔(默认1秒)
- -s <字节数>:指定数据包大小
- -W <超时秒数>:指定等待回应的超时时间
 
- 检测连通性示例: - # 检测与百度的连通性(默认无限次,按Ctrl+C停止) ping www.baidu.com # 发送4个数据包后停止 ping -c 4 192.168.1.1 # 每2秒发送一个数据包,共5次,超时等待3秒 ping -c 5 -i 2 -W 3 www.google.com
- 输出解读: - 64 bytes from ...:收到回应,包含字节数、目标IP、TTL(生存时间)和往返时间(RTT)
- Request timeout:超时未收到回应(可能网络不通或被防火墙拦截)
- 最终统计:包含发送/接收数量、丢包率、RTT平均值等
 
79. traceroute 和 mtr 命令的作用是什么?如何排查网络路径中的故障?
- 命令作用: - traceroute:追踪数据包从本地到目标主机的路由路径,显示经过的每一跳(路由器)的IP和延迟。
- mtr:结合- ping和- traceroute的功能,实时显示路径中各节点的连续状态,更适合长期监控。
 
- 使用方法: - # traceroute 示例(追踪到百度的路径) traceroute www.baidu.com # 选项:-n 显示IP而非主机名;-w 设置超时时间 traceroute -n -w 2 114.114.114.114 # mtr 示例(实时监控到谷歌的路径) mtr www.google.com # 选项:-n 显示IP;-r 生成报告模式(非交互) mtr -n -r www.github.com
- 故障排查: - 若某一跳开始无回应,但后续节点有回应:该节点可能禁用了ICMP,但路径仍通。
- 某一跳后完全无回应:该节点或其与下一跳的链路可能存在故障。
- 延迟突然增大的节点:可能存在网络拥堵或路由问题。
 
80. netstat 和 ss 命令的作用是什么?如何查看系统的网络连接状态?
- 命令作用: 
 两者均用于查看网络连接、端口监听、路由表等网络信息,- ss是- netstat的现代替代者,速度更快,支持更多协议。
- 常用选项及示例: - # 查看所有网络连接(包括TCP、UDP) netstat -tuln # -t:TCP, -u:UDP, -l:监听中, -n:显示IP和端口 ss -tuln # 等效的ss命令 # 查看所有已建立的TCP连接 netstat -ant | grep ESTABLISHED ss -ant | grep ESTAB # 查看特定端口的连接(如80端口) netstat -tuln | grep :80 ss -tuln | grep :80 # 查看进程与端口的关联(需root权限) netstat -tulnp ss -tulnp
- 连接状态说明(TCP): - LISTEN:端口处于监听状态,等待连接
- ESTABLISHED:连接已建立,数据可传输
- SYN_SENT:正在发起连接请求
- TIME_WAIT:连接已关闭,等待超时回收
 
81. 如何查看系统的DNS配置?/etc/resolv.conf 文件的作用是什么?
- 查看DNS配置: - # 方法1:查看resolv.conf文件(最直接) cat /etc/resolv.conf # 方法2:使用nmcli(NetworkManager管理的系统) nmcli device show eth0 | grep DNS # 方法3:使用systemd-resolve(systemd系统) systemd-resolve --status
- /etc/resolv.conf的作用:
 存储DNS服务器的IP地址和域名解析配置,系统进行域名解析时会优先参考此文件。
- 文件内容示例: - nameserver 114.114.114.114 # 首选DNS服务器 nameserver 8.8.8.8 # 备用DNS服务器 search example.com # 域名搜索后缀(当输入短域名时自动补全)
- 注意: 
 部分系统(如使用NetworkManager或systemd-resolved)中,- resolv.conf可能是自动生成的,手动修改会被覆盖。永久修改需通过网络管理工具(如- nmcli)配置。
82. host 和 dig 命令的作用是什么?如何查询域名对应的IP地址?
- 命令作用: 
 两者均用于DNS查询,- host更简单直观,- dig功能更强大,支持详细的DNS记录查询。
- 查询域名对应的IP地址: - # host 命令(简单查询) host www.baidu.com # 输出IPv4和IPv6地址 host -t A www.baidu.com # 只查询A记录(IPv4) # dig 命令(详细查询) dig www.baidu.com dig +short www.baidu.com # 只输出IP地址(简洁模式)
- 查询其他DNS记录: - # 查询MX记录(邮件服务器) host -t MX gmail.com dig -t MX gmail.com +short # 查询NS记录(域名服务器) host -t NS github.com dig -t NS github.com +short
- 指定DNS服务器查询: - host www.baidu.com 8.8.8.8 # 使用谷歌DNS查询 dig www.baidu.com @114.114.114.114 # 使用114DNS查询
83. 什么是防火墙?Linux中常用的防火墙工具是什么?(如 iptables、firewalld)
- 防火墙概念: 
 一种网络安全机制,通过制定规则允许或禁止网络数据包的进出,保护系统免受未授权访问。
- Linux常用防火墙工具: - iptables:- 底层防火墙工具,直接操作内核的netfilter模块。
- 基于规则链(chain)和表(table)工作,配置复杂但灵活。
- 规则需要手动保存,否则重启后失效。
 
- firewalld:- 动态防火墙管理工具,是iptables的前端(底层仍依赖netfilter)。
- 支持 zones(区域)和 services(服务)概念,配置更简单。
- 默认随系统启动,规则可动态生效(无需重启服务)。
 
- 动态防火墙管理工具,是
- ufw(Uncomplicated Firewall):- Ubuntu等发行版默认的简化防火墙工具,是iptables的封装。
- 命令简单,适合入门用户。
 
- Ubuntu等发行版默认的简化防火墙工具,是
 
- 基本操作示例: - # iptables:查看规则 iptables -L # firewalld:查看状态 systemctl status firewalld # ufw:启用防火墙 sudo ufw enable
84. iptables 的基本规则组成是什么?如何添加一条允许SSH连接的规则?
- 基本规则组成: - 表(Table):按功能分类,常用的有: 
 - filter:默认表,处理数据包的过滤(允许/拒绝)。
- nat:处理网络地址转换(如端口转发)。
- mangle:修改数据包的标记。
 
- 链(Chain):表中包含的规则集合,按数据包流向分类: 
 - INPUT:进入本机的数据包。
- OUTPUT:从本机发出的数据包。
- FORWARD:经过本机转发的数据包。
 
- 规则(Rule):每条规则包含匹配条件(如端口、IP)和动作(如ACCEPT、DROP)。
- 动作(Target): 
 - ACCEPT:允许数据包通过。
- DROP:丢弃数据包(不回应)。
- REJECT:拒绝数据包(返回错误信息)。
 
 
- 表(Table):按功能分类,常用的有: 
 
- 添加允许SSH连接的规则: 
 SSH默认使用22端口,规则如下:- # 允许来自任何IP的SSH连接(22端口) iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 只允许特定IP(如192.168.1.100)的SSH连接 iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT # 保存规则(Debian/Ubuntu) iptables-save > /etc/iptables/rules.v4 # 保存规则(CentOS/RHEL) service iptables save
85. firewalld 与 iptables 的区别是什么?如何开放80端口?
- 主要区别: - 特性 - iptables- firewalld- 配置方式 - 直接编写规则链 - 基于区域(zones)和服务(services) - 规则生效 - 修改后需重启服务或手动刷新 - 动态生效(无需重启) - 持久性 - 需手动保存规则 - 规则默认持久化 - 复杂度 - 较高(需了解链和表) - 较低(适合快速配置) - 依赖 - 直接操作netfilter - 作为iptables的前端,底层仍用netfilter 
- 开放80端口(HTTP服务): - # 方法1:通过端口号开放 sudo firewall-cmd --add-port=80/tcp # 临时开放(重启失效) sudo firewall-cmd --add-port=80/tcp --permanent # 永久开放 sudo firewall-cmd --reload # 重新加载配置(使永久规则生效) # 方法2:通过服务名开放(firewalld已定义http服务对应80端口) sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --reload # 验证规则是否生效 sudo firewall-cmd --list-ports sudo firewall-cmd --list-services
86. 什么是NAT(网络地址转换)?iptables 如何配置SNAT和DNAT?
- NAT概念: 
 网络地址转换(NAT)用于将一个IP地址空间转换为另一个IP地址空间,常见于私有网络访问公网(如家庭路由器)或端口转发场景。
- SNAT和DNAT: - SNAT(源地址转换):
 修改数据包的源IP地址,通常用于私有网络内的主机通过网关访问公网(共享公网IP)。
- DNAT(目的地址转换):
 修改数据包的目的IP地址或端口,通常用于将公网IP的某个端口转发到内网主机(如将公网80端口转发到内网服务器的8080端口)。
 
- SNAT(源地址转换):
- iptables配置示例:- # 配置SNAT(假设公网接口为eth0,公网IP为203.0.113.1) iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1 # 配置DNAT(将公网203.0.113.1的80端口转发到内网192.168.1.100的8080端口) iptables -t nat -A PREROUTING -d 203.0.113.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080 # 允许转发(默认可能禁用) iptables -A FORWARD -p tcp --dport 8080 -d 192.168.1.100 -j ACCEPT
87. 如何查看系统的网络带宽使用情况?(如 iftop、nload)
- 常用工具及用法: 
 - iftop:
 实时显示网络接口的带宽使用情况,按连接显示流量。- sudo iftop # 监控默认接口 sudo iftop -i eth0 # 监控指定接口eth0- 界面说明:左侧为源IP,右侧为目标IP,中间为实时带宽。 
- nload:
 以图形化方式显示总带宽、流入和流出速率。- sudo nload # 交互式显示所有接口 sudo nload eth0 # 只显示eth0接口
- vnstat:
 记录历史带宽使用情况,支持按小时/天/月统计。- sudo vnstat # 显示总统计 sudo vnstat -h # 按小时统计 sudo vnstat -d # 按天统计
- sar(系统自带):
 系统活动报告工具,可查看历史和实时带宽。- sar -n DEV 1 5 # 每1秒统计一次,共5次
 
88. 什么是SSH?如何通过SSH远程连接Linux服务器?ssh 命令的常用选项有哪些?
- SSH概念: 
 SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中远程登录服务器,替代了明文传输的Telnet。
- 远程连接方法: - # 基本语法:ssh 用户名@服务器IP/域名 ssh user@192.168.1.100 ssh admin@example.com
- 常用选项: - -p <端口>:指定SSH端口(默认22)- ssh -p 2222 user@192.168.1.100 # 连接到2222端口
- -i <密钥文件>:使用指定的私钥文件登录(密钥认证)- ssh -i ~/.ssh/id_rsa user@example.com
- -X:启用X11转发(可运行图形程序)- ssh -X user@192.168.1.100 # 连接后可运行xclock等图形程序
- -t:强制分配伪终端(用于在远程执行需要交互的命令)- ssh -t user@host "sudo bash" # 在远程主机上获取root终端
 
89. 如何配置SSH密钥登录?相比密码登录有什么优势?
- 密钥登录配置步骤: - 在本地生成密钥对: - ssh-keygen -t rsa -b 4096 # 生成RSA密钥对,默认存于~/.ssh/ # 按回车默认即可,可设置密码保护私钥(增强安全性)
- 将公钥上传到远程服务器: - # 方法1:使用ssh-copy-id(推荐) ssh-copy-id user@192.168.1.100 # 方法2:手动复制公钥 cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
- 测试密钥登录: - ssh user@192.168.1.100 # 无需输入密码即可登录
- (可选)禁用密码登录(增强安全性): 
 编辑远程服务器的- /etc/ssh/sshd_config:- PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 启用密钥登录- 重启SSH服务: - sudo systemctl restart sshd
 
- 相比密码登录的优势: - 更安全:避免密码被暴力破解,私钥可设置密码保护。
- 更便捷:无需每次输入密码,适合脚本自动化操作。
- 可审计:通过密钥管理追踪登录来源。
 
90. scp 和 sftp 命令的作用是什么?如何在服务器之间传输文件?
- 命令作用: - scp(Secure Copy):基于SSH的文件复制命令,用于在本地与远程服务器或服务器之间传输文件。
- sftp(Secure FTP):基于SSH的文件传输协议,提供交互式的文件传输环境(类似FTP)。
 
- scp使用示例:- # 本地文件复制到远程服务器 scp localfile.txt user@192.168.1.100:/remote/path/ # 远程文件复制到本地 scp user@192.168.1.100:/remote/file.txt /local/path/ # 复制目录(-r 递归选项) scp -r localdir/ user@192.168.1.100:/remote/dir/ # 指定端口(-P 端口号) scp -P 2222 file.txt user@host:/path/
- sftp使用示例:- # 连接远程服务器 sftp user@192.168.1.100 # 常用交互命令 put localfile.txt # 上传本地文件到远程当前目录 get remotefile.txt # 下载远程文件到本地当前目录 ls # 列出远程目录内容 cd # 切换远程目录 lls # 列出本地目录内容 lcd # 切换本地目录 exit # 退出sftp
91. 什么是端口?如何查看某个端口被哪个进程占用?(如 lsof -i :端口)
- 端口概念: 
 端口是计算机网络中用于区分不同服务的数字标识(0-65535),配合IP地址可唯一确定网络中的某个服务。- 0-1023:知名端口(如80=HTTP,443=HTTPS,22=SSH)。
- 1024-49151:注册端口。
- 49152-65535:动态/私有端口。
 
- 查看端口占用的方法: - lsof命令:- sudo lsof -i :80 # 查看80端口占用情况 sudo lsof -i tcp:22 # 查看TCP 22端口
- netstat命令:- netstat -tulnp | grep :80 # -t:TCP, -u:UDP, -l:监听, -n:数字, -p:进程
- ss命令(推荐,更高效):- ss -tulnp | grep :80
- fuser命令:- sudo fuser 80/tcp # 显示占用80端口(TCP)的进程ID
 
- 示例输出解读: - # lsof -i :80 输出示例 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)- 表示 - nginx进程(PID=1234)正在监听80端口(http服务)。
92. 什么是网关(Gateway)?它在网络通信中起到什么作用?
- 网关概念: 
 网关是连接两个不同网络的设备(如路由器),负责在不同网络之间转发数据包,是网络层的设备。
- 作用: - 跨网络通信:当主机需要与不同网段的主机通信时,数据包通过网关转发。
- 协议转换:可在不同协议的网络间转换数据格式(如以太网与WiFi)。
- 路由选择:根据路由表选择最优路径转发数据包。
- NAT功能:实现私有IP与公网IP的转换,使内网主机能访问互联网。
 
- 查看系统网关: - # 方法1:ip route ip route show | grep default # 输出:default via 192.168.1.1 dev eth0 # 方法2:route route -n | grep UG # UG表示默认网关(G)且已启用(U) # 方法3:netstat netstat -rn | grep UG- 输出中的 - 192.168.1.1即为默认网关IP。
93. 如何临时和永久修改主机名?(hostname 命令和 /etc/hostname 文件)
- 临时修改主机名(立即生效,重启后失效): - sudo hostname newhostname # 将主机名改为newhostname
- 永久修改主机名: - 方法1:修改 - /etc/hostname文件(适用于大多数Linux):- sudo vim /etc/hostname # 编辑文件,替换为新主机名- 重启后生效,或执行 - sudo hostname -F /etc/hostname立即生效。
- 方法2:使用 - hostnamectl命令(systemd系统,推荐):- sudo hostnamectl set-hostname newhostname # 永久修改- 无需重启,立即生效,同时更新 - /etc/hostname和- /etc/machine-info。
 
- 验证主机名: - hostname # 查看当前主机名 hostnamectl # 查看详细主机信息(systemd系统)
- 注意: 
 建议同时在- /etc/hosts中更新主机名与IP的映射,避免本地解析问题:- sudo vim /etc/hosts # 添加或修改:127.0.1.1 newhostname
94. /etc/hosts 文件的作用是什么?它与DNS的关系是什么?
- /etc/hosts的作用:
 存储IP地址与主机名的映射关系,用于本地域名解析,优先级高于DNS。系统在解析域名时,会先查询- /etc/hosts,若未找到再查询DNS服务器。
- 文件内容示例: - 127.0.0.1 localhost # 本地回环地址 127.0.1.1 myserver # 本机主机名映射 192.168.1.100 server1 # 自定义IP与主机名映射 203.0.113.5 example.com # 自定义域名映射
- 与DNS的关系: - 相同点:均用于将域名解析为IP地址。
- 不同点: 
 - hosts:本地文件,仅对本机有效,修改简单,无缓存。
- DNS:分布式网络服务,对全网有效,修改需通过DNS服务器,有缓存机制。
 
- 优先级:系统解析域名时,通常先查hosts,再查DNS(可通过/etc/nsswitch.conf的hosts配置调整)。
 
- 应用场景: - 测试环境中临时绑定域名与IP(无需修改DNS)。
- 屏蔽恶意网站(将其域名指向127.0.0.1)。
- 加速本地常用域名的解析。
 
95. 什么是DHCP?如何配置Linux系统使用DHCP获取IP地址?
- DHCP概念: 
 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用于自动分配IP地址、子网掩码、网关、DNS等网络参数,避免手动配置的繁琐。
- 配置Linux使用DHCP获取IP地址: - 临时配置(立即生效,重启失效): - # 使用dhclient获取IP(适用于大多数系统) sudo dhclient eth0 # 为eth0接口获取IP # 释放IP sudo dhclient -r eth0
- 永久配置(不同发行版配置文件不同): - Debian/Ubuntu( - /etc/network/interfaces):- sudo vim /etc/network/interfaces # 添加: auto eth0 iface eth0 inet dhcp- 重启网络: - sudo systemctl restart networking
- CentOS/RHEL( - /etc/sysconfig/network-scripts/ifcfg-eth0):- sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 设置: BOOTPROTO=dhcp ONBOOT=yes- 重启网络: - sudo systemctl restart network
- 使用NetworkManager(现代Linux): - sudo nmcli connection modify eth0 ipv4.method auto sudo nmcli connection up eth0
 
 
- 验证配置: - ip addr show eth0 # 查看是否获取到IP cat /etc/resolv.conf # 查看是否获取到DNS
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号