Linux 新手村Linux 新手村
🏠 首页
📖 教程
  • Linux 官网
  • Ubuntu 官网
  • CentOS 官网
🏠 首页
📖 教程
  • Linux 官网
  • Ubuntu 官网
  • CentOS 官网
  • 🚀 入门篇 - 欢迎来到 Linux 世界

    • 📚 长安的教程导航
    • 🐧 什么是 Linux?
    • 💿 安装 Linux
    • 🎉 首次开机
  • 🎯 基础篇 - 必备生存技能

    • ⌨️ 基础命令
    • 🗂️ 文件系统
    • 📝 文件操作
    • 👥 用户与权限
  • ⚔️ 进阶篇 - 成为高手之路

    • ⚔️ Vim 编辑器
    • 🤖 Shell 脚本
    • ⚙️ 进程与服务
    • 🌐 网络基础
  • 🏆 高级篇 - 突破自我

    • 💡 高级技巧
    • 🔧 故障排查
    • 🎭 日常案例与血泪教训

🌐 网络基础

大家好,我是长安!网络是现代服务器的生命线,这一章带你掌握 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 参数说明:

参数含义
-tTCP
-uUDP
-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

📝 本章小结

常用命令速查

操作命令
查看 IPip 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

网络诊断步骤

  1. 检查网卡:ip addr - 有没有 IP?
  2. 检查网关:ip route - 网关配置对吗?
  3. 测试网关:ping 网关IP - 能通吗?
  4. 测试公网:ping 8.8.8.8 - 能出去吗?
  5. 测试 DNS:ping google.com - DNS 正常吗?

🚀 下一步

网络基础掌握了,接下来跟着长安学习 高级技巧,让你效率翻倍!

—— 编程指南社区 · 长安

最后更新: 2025/12/1 15:56
Prev
⚙️ 进程与服务