一篇面向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 22ufw deny 22ufw 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 ACCEPTsudo 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更复杂,但更灵活。- 如果有云安全组,仍然需要配合配置。
第四步:像黑客一样深入网络连接
- 抓包:
tcpdumptcpdump -i any port 22
- 列连接:
ss -t -a - 伪造:
nc -l 12345 - 内核:
cat /proc/net/tcp
第五步:总结与建议
- 学习路径 :
ss→lsof→ufw/iptables→tcpdump。 - 安全建议 :
- 关闭不必要端口。
- 修改SSH端口。
- 用密钥登录。