🌐 网络基础
大家好,我是长安!网络是现代服务器的生命线,这一章带你掌握 Linux 网络配置的基础知识。
🎯 本章目标
跟着长安读完这一章,你将学会:
- 查看网络配置信息
- 网络连接测试与诊断
- 文件传输方法
- 防火墙基础
📡 查看网络配置
ip 命令(推荐)
# 查看所有网络接口
ip addr
ip a # 简写
# 查看指定接口
ip addr show eth0
# 查看路由表
ip route
ip r
# 查看邻居(ARP)表
ip neigh
输出解释:
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
│ │ │
│ │ └── 广播地址
│ └── IP地址/子网掩码
└── 接口名称
ifconfig(旧命令)
# 查看所有网络接口
ifconfig
# 查看指定接口
ifconfig eth0
💡 lo 是什么?
lo(loopback)是回环接口,IP 地址是 127.0.0.1,也叫"本地主机"。 当你 ping 127.0.0.1 时,就是在 ping 自己。
查看 DNS 配置
# 查看 DNS 服务器
cat /etc/resolv.conf
# 使用 systemd-resolve
systemd-resolve --status
查看主机名
# 查看主机名
hostname
# 修改主机名(临时)
sudo hostname new-hostname
# 修改主机名(永久)
sudo hostnamectl set-hostname new-hostname
🔗 网络连接测试
ping - 测试连通性
# 测试能否连接到目标
ping google.com
# 只 ping 4 次
ping -c 4 google.com
# 指定时间间隔
ping -i 2 google.com
traceroute - 跟踪路由
# 查看数据包经过的路径
traceroute google.com
# Windows 风格
tracepath google.com
curl - 测试 HTTP
# 获取网页内容
curl https://example.com
# 只显示响应头
curl -I https://example.com
# 下载文件
curl -O https://example.com/file.zip
# 下载并重命名
curl -o myfile.zip https://example.com/file.zip
# 显示详细信息
curl -v https://example.com
# 跟随重定向
curl -L https://example.com
wget - 下载文件
# 下载文件
wget https://example.com/file.zip
# 下载并重命名
wget -O myfile.zip https://example.com/file.zip
# 后台下载
wget -b https://example.com/big-file.zip
# 断点续传
wget -c https://example.com/big-file.zip
# 递归下载整个网站
wget -r -np https://example.com/
nc (netcat) - 网络工具
# 测试端口是否开放
nc -zv example.com 80
# 扫描端口范围
nc -zv example.com 1-1000
# 简单的聊天服务器
# 服务端
nc -l 12345
# 客户端
nc localhost 12345
telnet - 测试端口
# 测试端口连接
telnet example.com 80
📊 网络状态查看
ss - 套接字统计
# 查看所有连接
ss -a
# 查看 TCP 连接
ss -t
# 查看监听的端口
ss -l
# 查看监听的 TCP 端口(常用)
ss -tlnp
# 查看监听的 UDP 端口
ss -ulnp
ss 参数说明:
| 参数 | 含义 |
|---|---|
-t | TCP |
-u | UDP |
-l | 监听状态 |
-n | 显示端口号(不解析服务名) |
-p | 显示进程信息 |
-a | 显示所有 |
netstat(旧命令)
# 查看监听端口
netstat -tlnp
# 查看所有连接
netstat -an
# 查看网络统计
netstat -s
查看谁在使用端口
# 查看 80 端口被谁占用
sudo lsof -i :80
# 使用 ss
sudo ss -tlnp | grep :80
📁 文件传输
scp - 安全复制
# 上传文件到远程服务器
scp local_file.txt user@server:/path/to/destination/
# 下载远程文件到本地
scp user@server:/path/to/file.txt ./
# 复制整个目录
scp -r local_dir user@server:/path/to/destination/
# 使用指定端口
scp -P 2222 file.txt user@server:/path/
rsync - 同步工具
# 本地同步
rsync -av source/ destination/
# 远程同步(上传)
rsync -avz local_dir/ user@server:/remote_dir/
# 远程同步(下载)
rsync -avz user@server:/remote_dir/ local_dir/
# 删除目标多余文件
rsync -avz --delete source/ destination/
# 显示进度
rsync -avz --progress source/ destination/
rsync 参数:
| 参数 | 含义 |
|---|---|
-a | 归档模式(保留权限等) |
-v | 详细输出 |
-z | 压缩传输 |
--delete | 删除目标独有的文件 |
--progress | 显示进度 |
sftp - 安全 FTP
# 连接到服务器
sftp user@server
# sftp 命令
sftp> ls # 列出远程文件
sftp> lls # 列出本地文件
sftp> get file.txt # 下载文件
sftp> put file.txt # 上传文件
sftp> quit # 退出
🔐 SSH 远程连接
基本连接
# 连接远程服务器
ssh user@server
# 使用指定端口
ssh -p 2222 user@server
# 执行远程命令
ssh user@server "ls -la"
SSH 密钥认证
# 1. 生成密钥对
ssh-keygen -t rsa -b 4096
# 按回车使用默认设置
# 生成 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)
# 2. 复制公钥到服务器
ssh-copy-id user@server
# 3. 现在可以免密登录
ssh user@server
SSH 配置文件
编辑 ~/.ssh/config:
# 为常用服务器设置别名
Host myserver
HostName 192.168.1.100
User xiaoming
Port 22
IdentityFile ~/.ssh/id_rsa
# 然后可以直接用
ssh myserver
🔥 防火墙(UFW)
Ubuntu 使用 ufw(Uncomplicated Firewall)管理防火墙。
基本操作
# 查看状态
sudo ufw status
sudo ufw status verbose
# 开启防火墙
sudo ufw enable
# 关闭防火墙
sudo ufw disable
# 重置规则
sudo ufw reset
添加规则
# 允许端口
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22
# 允许特定协议
sudo ufw allow 80/tcp
sudo ufw allow 53/udp
# 允许端口范围
sudo ufw allow 3000:4000/tcp
# 允许特定 IP
sudo ufw allow from 192.168.1.100
# 允许特定 IP 访问特定端口
sudo ufw allow from 192.168.1.100 to any port 22
# 允许子网
sudo ufw allow from 192.168.1.0/24
删除规则
# 按规则删除
sudo ufw delete allow 80
# 按编号删除
sudo ufw status numbered
sudo ufw delete 2
拒绝规则
# 拒绝端口
sudo ufw deny 3306
# 拒绝 IP
sudo ufw deny from 10.0.0.100
常用配置示例
# Web 服务器
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
# 数据库服务器(只允许内网访问)
sudo ufw allow from 192.168.1.0/24 to any port 3306
🔧 网络配置(临时)
配置 IP 地址
# 添加 IP 地址
sudo ip addr add 192.168.1.200/24 dev eth0
# 删除 IP 地址
sudo ip addr del 192.168.1.200/24 dev eth0
# 启用/禁用网卡
sudo ip link set eth0 up
sudo ip link set eth0 down
配置路由
# 添加默认网关
sudo ip route add default via 192.168.1.1
# 添加静态路由
sudo ip route add 10.0.0.0/8 via 192.168.1.1
⚠️ 注意
以上配置是临时的,重启后会失效。 永久配置需要修改网络配置文件(不同发行版方式不同)。
📡 网络配置(永久 - Netplan)
Ubuntu 使用 Netplan 进行网络配置。
编辑 /etc/netplan/01-netcfg.yaml:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
应用配置:
sudo netplan apply
📝 本章小结
常用命令速查
| 操作 | 命令 |
|---|---|
| 查看 IP | ip addr |
| 查看路由 | ip route |
| 测试连通 | ping host |
| 跟踪路由 | traceroute host |
| 查看端口 | ss -tlnp |
| 下载文件 | wget URL |
| HTTP 请求 | curl URL |
| 远程连接 | ssh user@host |
| 文件传输 | scp file user@host:/path |
| 防火墙状态 | sudo ufw status |
网络诊断步骤
- 检查网卡:
ip addr- 有没有 IP? - 检查网关:
ip route- 网关配置对吗? - 测试网关:
ping 网关IP- 能通吗? - 测试公网:
ping 8.8.8.8- 能出去吗? - 测试 DNS:
ping google.com- DNS 正常吗?
🚀 下一步
网络基础掌握了,接下来跟着长安学习 高级技巧,让你效率翻倍!
—— 编程指南社区 · 长安
