在现代互联网架构中,Linux 系统已成为服务器部署和管理的主力军。尤其是对于网络配置,掌握基本的命令和工具不仅能帮助你快速解决问题,还能提升你的运维能力,降低服务器故障的风险。无论你是刚刚接触 Linux 还是有一定基础的学习者,本文将带你从零开始,掌握 Linux 网络配置的基本命令,轻松应对服务器部署。
Linux 网络配置是让计算机连接到网络并与其它设备通信的过程。对于新手来说,这可能显得复杂,尤其是面对不同的发行版和配置工具。我们的目标是为初学者提供一个清晰的、逐步的指南,帮助他们掌握基本网络命令,并尝试部署一个简单服务器,如 Web 服务器。
Linux 网络配置是让你的计算机连接到网络并与其它设备通信的过程。对于新手来说,这可能看起来复杂,但我们会一步步引导你。
常用网络命令
以下是新手需要掌握的网络命令,方便诊断和使用网络:
命令 | 功能 | 示例 |
---|---|---|
ping | 检查与主机的连通性 | ping google.com |
traceroute | 追踪到主机的路径 | traceroute google.com |
netstat | 查看网络连接和统计信息 | netstat -tln 查看监听端口 |
ssh | 安全远程访问 | ssh user@hostname |
tcpdump | 捕获网络流量(需 root 权限) | sudo tcpdump -i eth0 |
- ping:用于测试网络连通性,例如 ping google.com 会发送 ICMP 请求,查看是否收到响应。
- traceroute:显示数据包到目标主机的路径,例如 traceroute google.com 帮助诊断网络延迟。
- netstat:查看网络连接状态,例如 netstat -a 列出所有连接,netstat -tln 查看监听的 TCP 端口。
- ssh:用于安全远程登录,例如 ssh [email protected] 连接到远程主机。
- tcpdump:捕获网络流量,用于深入分析,例如 sudo tcpdump -i eth0 捕获 eth0 接口的流量。
这些命令是网络诊断的基础,研究显示,ping 和 traceroute 是新手最常使用的工具。
网络问题排查
网络问题可能包括无法连接互联网、访问特定网站失败等。以下是诊断步骤:
- 检查接口状态:
- 使用 ip link show 确保接口(如 eth0)状态为 UP。
- 如果不是,启用接口:sudo ip link set eth0 up。
- 验证 IP 配置:
- 使用 ip addr show 检查是否有 IP 地址。
- 如果没有,尝试通过 DHCP 获取:sudo dhclient eth0。
- 测试本地网络:
- ping 192.168.1.1 测试是否能 ping 通默认网关。
- 如果失败,检查网线或路由器。
- 检查 DNS 解析:
- dig example.com 或 nslookup example.com 测试 DNS 是否正常。
- 如果失败,检查 /etc/resolv.conf 是否有正确的 DNS 服务器。
这些步骤帮助新手系统地诊断网络问题,证据显示,DNS 问题常被忽视。
第一步:为什么要关心网络配置?
在公网中运行的服务器,就像一座暴露在外的房子。如果不锁好“门”(端口)和设置好“围墙”(防火墙),黑客可能轻松入侵。作为后端开发人员,你的代码可能需要监听某个端口(比如Web服务的80或443端口),而服务器的安全性、访问控制和网络状态直接影响服务的可用性。因此,掌握网络命令是部署服务的第一步。
第二步:基础网络命令入门
让我们从最简单的命令开始,逐步深入。
1. 查看网络连接:netstat
和 ss
在Linux中,查看当前网络连接状态是运维的基础。我们先用两个常用工具:netstat
和 ss
。
-
命令1:
netstat
- 输入:
netstat -tuln
- 输出:显示所有正在监听的TCP和UDP端口。
- 选项解析:
-t
:表示“TCP”,只显示TCP连接。-u
:表示“UDP”,只显示UDP连接。-l
:表示“Listening”,只显示监听状态的端口(即服务器端等待连接的端口)。-n
:表示“Numeric”,显示数字形式的IP和端口,而不是解析成域名(速度更快)。
- 示例输出:
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
- 输入:
-
命令2:
ss
(更现代的选择)- 输入:
ss -tuln
- 输出:和
netstat
类似,但速度更快,信息更简洁。 - 示例输出:
- 输入:
-
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
- 注意:
:::22
表示监听在IPv6的22端口(::
是IPv6通配符地址)。 -
实际应用:检查80端口是否被占用,为部署Web服务做准备。
2. 查看某个端口属于哪个程序:lsof
的秘密
光知道端口被占用还不够,你需要知道是谁占用了它。
-
命令:
lsof
- 输入:
sudo lsof -i :22
- 输出:显示占用22端口的程序。
- 为什么叫
lsof
?
lsof
是 "List Open Files" 的缩写,在Linux中网络连接也被视为文件。 - 示例输出:
-
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1234 root 3u IPv6 56789 0t0 TCP *:22 (LISTEN)
- 输入:
-
为什么
lsof -i :22
没有输出?- 权限不足:用
sudo
。 - 服务未运行:检查
systemctl status sshd
。 - 协议不匹配:试试
lsof -i tcp:22
。
- 权限不足:用
-
实际应用:用
kill -9 1234
结束占用端口的进程。
3. 查看某个端口的连接状态
-
命令:
ss
- 输入:
ss -t -a | grep :22
- 输出:
ESTAB 0 0 192.168.1.10:22 10.0.0.5:54321 LISTEN 0 128 :::22 :::*
- 输入:
-
实际应用:排查不明连接。
第三步:防火墙与端口控制
什么是防火墙?
防火墙基于规则过滤网络数据包,常见工具包括 iptables
和 firewalld
。
检查防火墙状态
- 命令:
systemctl
- 输入:
systemctl status firewalld
- 输入:
- 命令:
ufw
- 输入:
ufw status
- 输入:
配置防火墙:只允许自己访问
假设你的IP是 203.0.113.5
:
- 用
ufw
: -
ufw allow from 203.0.113.5 to any port 22 ufw deny 22 ufw enable
开放业务端口
ufw allow 8080
控制端口是否对外开放:防火墙与云服务器安全组的区别
1. 服务器内部控制:防火墙
- 操作:
- 开放:
ufw allow 8080
- 关闭:
ufw deny 8080
- 开放:
- 检查:
nc -zv 服务器IP 8080
2. 云服务器安全组
- 操作:在云面板添加规则,如开放TCP 8080。
- 关系:
- 安全组未开放,即使防火墙允许,外界也无法访问。
- 两者都需配置正确才能连通。
3. 动手实践
- 服务器内:
ufw allow 8080
- 云面板:开放8080
- 测试:
nc -zv 服务器IP 8080
没有 ufw
时如何控制防火墙
如果你的系统没有 ufw
(输入 ufw
提示“command not found”),别担心,可以用 iptables
代替。iptables
是Linux内核的底层防火墙工具,几乎所有系统都有。
1. 检查是否安装 iptables
- 输入:
iptables -L
- 输出:列出当前防火墙规则。如果提示“command not found”,安装它:
- Ubuntu/Debian:
sudo apt install iptables
- CentOS/RHEL:
sudo yum install iptables
- Ubuntu/Debian:
2. 用 iptables
控制端口
- 开放8080端口:
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
- 解析:
-A INPUT
:追加规则到输入链。-p tcp
:协议为TCP。--dport 8080
:目标端口8080。-j ACCEPT
:接受流量。
- 拒绝8080端口:
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
- 只允许特定IP访问22端口:
sudo iptables -A INPUT -p tcp --dport 22 -s 203.0.113.5 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
3. 保存规则
iptables
的规则默认不持久,重启后丢失。保存方法:
- Ubuntu:
sudo iptables-save > /etc/iptables/rules.v4
- CentOS:
sudo service iptables save
- 重启后恢复:
sudo iptables-restore < /etc/iptables/rules.v4
4. 检查效果
iptables -L -n
:列出规则。nc -zv 服务器IP 8080
:测试端口是否开放。
5. 注意事项
iptables
比ufw
更复杂,但更灵活。- 如果有云安全组,仍然需要配合配置。
第四步:像黑客一样深入网络连接
- 抓包:
tcpdump
tcpdump -i any port 22
- 列连接:
ss -t -a
- 伪造:
nc -l 12345
- 内核:
cat /proc/net/tcp
第五步:总结与建议
- 学习路径:
ss
→lsof
→ufw
/iptables
→tcpdump
。 - 安全建议:
- 关闭不必要端口。
- 修改SSH端口。
- 用密钥登录。
总结
掌握 Linux 网络配置和常用命令后,你能够自信地进行网络故障排除、IP 配置、服务器部署等任务。网络配置是 Linux 系统管理的重要组成部分,精通这些基础命令与配置,不仅能帮助你在日常工作中提升效率,还能为你在未来的项目中奠定坚实的基础。
希望本文对你有帮助,祝你顺利入门 Linux 网络配置,并在服务器部署中越走越远!