网络配置

返回 Linux


查看网络状态

# 接口信息
ip addr                        # 所有网卡及 IP(推荐)
ip addr show eth0              # 指定网卡
ifconfig                       # 旧命令(需安装 net-tools)
 
# 路由表
ip route
route -n                       # 旧命令
 
# 端口 / 连接
ss -tlnp                       # 监听的 TCP 端口及进程(推荐)
ss -tulnp                      # TCP + UDP
netstat -tlnp                  # 旧命令(需安装 net-tools)
lsof -i :8080                  # 查看占用指定端口的进程

ss -tlnp 字段说明:

字段说明
StateLISTEN / ESTABLISHED
Local Address本地监听地址:端口
Peer Address对端地址
Process进程名及 PID

ip 命令速查

# 地址管理
ip addr add 192.168.1.100/24 dev eth0    # 临时添加 IP
ip addr del 192.168.1.100/24 dev eth0    # 删除 IP
 
# 接口启停
ip link set eth0 up
ip link set eth0 down
 
# 路由管理
ip route add default via 192.168.1.1          # 添加默认网关
ip route add 10.0.0.0/8 via 192.168.1.254     # 添加静态路由
ip route del 10.0.0.0/8                        # 删除路由

静态 IP 配置

Ubuntu(Netplan)

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
      dhcp4: false
netplan apply

CentOS / RHEL(nmcli)

# 设置静态 IP
nmcli con mod eth0 ipv4.addresses 192.168.1.100/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con mod eth0 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli con mod eth0 ipv4.method manual
nmcli con up eth0

DNS 配置

# 临时修改(重启失效)
echo "nameserver 8.8.8.8" > /etc/resolv.conf
 
# 查看 DNS 解析
cat /etc/resolv.conf
resolvectl status             # systemd-resolved
 
# 测试解析
nslookup example.com
dig example.com
dig @8.8.8.8 example.com     # 指定 DNS 服务器

网络诊断

# 连通性
ping -c 4 8.8.8.8
 
# 路由追踪
traceroute 8.8.8.8
mtr 8.8.8.8                  # 动态追踪(需安装)
 
# 抓包
tcpdump -i eth0 port 80
tcpdump -i any host 192.168.1.1 -w capture.pcap   # 保存到文件
tcpdump -r capture.pcap                             # 读取文件
 
# HTTP 测试
curl -v http://example.com
curl -o /dev/null -w "%{http_code} %{time_total}s\n" http://example.com
wget -O /dev/null http://example.com

防火墙

firewalld(CentOS / RHEL)

systemctl start firewalld
firewall-cmd --state
 
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all

ufw(Ubuntu)

ufw enable
ufw allow 22/tcp
ufw allow 80/tcp
ufw deny 3306/tcp
ufw status verbose

iptables

iptables -L -n -v                          # 查看规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP                  # 默认拒绝
 
# 保存规则(CentOS)
service iptables save

SSH 配置

# 客户端连接
ssh user@192.168.1.100
ssh -p 2222 user@host          # 指定端口
ssh -i ~/.ssh/id_rsa user@host # 指定密钥
 
# 生成密钥对
ssh-keygen -t ed25519 -C "comment"
 
# 推送公钥到服务器
ssh-copy-id user@host

服务端配置 /etc/ssh/sshd_config

Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
systemctl restart sshd

相关文档