《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括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端口?
主要区别:
特性 iptablesfirewalld配置方式 直接编写规则链 基于区域(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 :80fuser命令: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 networkingCentOS/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号