一篇面向Linux网络配置新手的博客:从零开始掌握网络命令与服务器部署
作为一名后端开发人员,你被分配了一台完全"裸"的远程Linux服务器,要求你在上面部署各种服务。面对这样的任务,如果你对网络命令一无所知,别担心!这篇博客将带你从零开始,循序渐进地学习Linux中与网络相关的核心技能。我们会围绕常见的服务器部署需求,比如查看网络连接、检查端口归属、分析端口状态,以及配置防火墙和端口访问权限等,逐步展开讲解。不仅如此,我还会解释每个命令的选项含义(包括缩写来源),并回答一些常见疑问,帮助你更好地记忆和理解,甚至像黑客一样深入掌握Linux网络连接。
第一步:为什么要关心网络配置?
在公网中运行的服务器,就像一座暴露在外的房子。如果不锁好"门"(端口)和设置好"围墙"(防火墙),黑客可能轻松入侵。作为后端开发人员,你的代码可能需要监听某个端口(比如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和端口,而不是解析成域名(速度更快)。
-
示例输出:
cssProto 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
类似,但速度更快,信息更简洁。 -
示例输出:
rubyNetid 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中网络连接也被视为文件。 -
示例输出:
sqlCOMMAND 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
-
输出:
rubyESTAB 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端口。
- 用密钥登录。