Skip to content

网络配置

本章将介绍 macOS 网络配置,包括 Wi-Fi、以太网、网络诊断等内容。

网络概述

网络接口

bash
# 查看网络接口
ifconfig

# 查看特定接口
ifconfig en0

# 列出所有网络接口
networksetup -listallnetworkservices

# 查看硬件端口
networksetup -listallhardwareports

# 查看网络接口信息
networksetup -getinfo "Wi-Fi"

网络配置文件

text
macOS 网络配置位置:

网络偏好设置:
/Library/Preferences/SystemConfiguration/preferences.plist

网络接口配置:
/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist

Wi-Fi 配置:
/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist

 hosts 文件:
/etc/hosts

Wi-Fi 配置

基本操作

bash
# 打开 Wi-Fi 设置
open "x-apple.systempreferences:com.apple.preference.network"

# 开启/关闭 Wi-Fi
networksetup -setairportpower en0 on
networksetup -setairportpower en0 off

# 查看可用 Wi-Fi 网络
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s

# 连接到 Wi-Fi
networksetup -setairportnetwork en0 "网络名称" "密码"

# 断开 Wi-Fi
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z

# 查看当前连接的 Wi-Fi
networksetup -getairportnetwork en0

Wi-Fi 信息

bash
# 查看 Wi-Fi 详细信息
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

# 输出解释:
# agrCtlRSSI: 信号强度(负值,越接近 0 越好)
# agrExtRSSI: 外部信号强度
# agrCtlNoise: 噪声级别
# agrExtNoise: 外部噪声
# state: 连接状态
# op mode: 操作模式
# lastTxRate: 最后传输速率
# maxRate: 最大速率
# lastAssocStatus: 最后关联状态
# BSSID: 接入点 MAC 地址
# SSID: 网络名称
# MCS: 调制编码方案索引
# channel: 信道

# 查看 Wi-Fi 信道信息
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | grep channel

管理 Wi-Fi 密码

bash
# 查看已保存的 Wi-Fi 网络
security find-generic-password -wa "网络名称"

# 删除已保存的 Wi-Fi 网络
sudo networksetup -removepreferredwirelessnetwork en0 "网络名称"

# 删除所有已保存的网络
sudo networksetup -removeallpreferredwirelessnetworks en0

# 使用钥匙串访问查看密码
# 打开"钥匙串访问"应用
# 搜索网络名称
# 双击条目,勾选"显示密码"

以太网配置

IP 地址配置

bash
# 查看当前 IP 配置
networksetup -getinfo "Ethernet"

# 设置 DHCP
networksetup -setdhcp "Ethernet"

# 设置静态 IP
networksetup -setmanual "Ethernet" 192.168.1.100 255.255.255.0 192.168.1.1

# 设置 DHCP 手动 IP
networksetup -setmanualwithdhcprouter "Ethernet" 192.168.1.100

# 查看当前 IP 地址
ipconfig getifaddr en0

# 查看所有接口 IP
ifconfig | grep "inet "

DNS 配置

bash
# 查看 DNS 服务器
networksetup -getdnsservers "Wi-Fi"

# 设置 DNS 服务器
networksetup -setdnsservers "Wi-Fi" 8.8.8.8 8.8.4.4

# 添加 DNS 服务器
networksetup -setdnsservers "Wi-Fi" 8.8.8.8 8.8.4.4 1.1.1.1

# 清空 DNS 设置(使用 DHCP 分配)
networksetup -setdnsservers "Wi-Fi" empty

# 刷新 DNS 缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

网络顺序

bash
# 查看网络服务顺序
networksetup -listnetworkserviceorder

# 设置网络服务顺序
# 更改服务优先级
sudo networksetup -ordernetworkservices "Wi-Fi" "Ethernet" "Bluetooth PAN"

# 查看当前活动网络接口
route -n get default | grep interface

网络诊断

连接测试

bash
# 测试网络连通性
ping 8.8.8.8
ping -c 5 www.baidu.com

# 测试端口连通性
nc -zv www.baidu.com 80
nc -zv 192.168.1.1 22

# 使用 networksetup 测试
networksetup -settestnetworkservice "Wi-Fi" on

# 查看网络延迟
ping -c 10 www.baidu.com | tail -1

# 使用 curl 测试
curl -I https://www.baidu.com
curl -o /dev/null -s -w "Time: %{time_total}s\n" https://www.baidu.com

路由追踪

bash
# 追踪路由
traceroute www.baidu.com

# 使用 ICMP 追踪
traceroute -I www.baidu.com

# 使用 TCP 追踪
traceroute -T www.baidu.com

# 查看路由表
netstat -rn

# 查看默认网关
route -n get default

端口扫描

bash
# 查看监听端口
lsof -i -P | grep LISTEN

# 查看所有网络连接
lsof -i

# 查看特定端口
lsof -i :80

# 使用 netstat
netstat -an | grep LISTEN
netstat -an | grep ESTABLISHED

# 使用 nmap 扫描(需安装)
brew install nmap
nmap -sT localhost
nmap -sS 192.168.1.1

网络统计

bash
# 查看网络统计
netstat -s

# 查看接口统计
netstat -i

# 查看网络流量
# 使用 nettop
nettop -P

# 使用 ifconfig 查看流量
ifconfig en0 | grep -E "input|output"

# 实时网络监控
# 使用 iftop(需安装)
brew install iftop
sudo iftop

网络高级设置

代理设置

bash
# 查看代理设置
networksetup -getwebproxy "Wi-Fi"
networksetup -getsecurewebproxy "Wi-Fi"
networksetup -getsocksfirewallproxy "Wi-Fi"

# 设置 HTTP 代理
networksetup -setwebproxy "Wi-Fi" 127.0.0.1 7890

# 设置 HTTPS 代理
networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 7890

# 设置 SOCKS 代理
networksetup -setsocksfirewallproxy "Wi-Fi" 127.0.0.1 1080

# 关闭代理
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off

# 开启代理
networksetup -setwebproxystate "Wi-Fi" on
networksetup -setsecurewebproxystate "Wi-Fi" on

hosts 文件

bash
# 查看 hosts 文件
cat /etc/hosts

# 编辑 hosts 文件
sudo nano /etc/hosts

# hosts 文件格式
# IP地址 主机名
# 127.0.0.1       localhost
# 255.255.255.255 broadcasthost
# ::1             localhost

# 添加条目
echo "192.168.1.100 myserver.local" | sudo tee -a /etc/hosts

# 刷新 DNS 缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

防火墙设置

bash
# 查看防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

# 启用防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

# 禁用防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

# 查看防火墙规则
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps

# 添加应用到防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/AppName.app

# 删除应用
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /Applications/AppName.app

# 允许传入连接
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/AppName.app

# 阻止传入连接
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --blockapp /Applications/AppName.app

VPN 配置

系统 VPN

bash
# 创建 VPN 连接
# 系统设置 → 网络 → 添加 VPN 配置

# VPN 类型:
# - L2TP over IPSec
# - Cisco IPSec
# - IKEv2

# 命令行连接 VPN
# 使用 scutil
scutil --nc start "VPN名称"
scutil --nc stop "VPN名称"

# 查看 VPN 状态
scutil --nc list

第三方 VPN

bash
# 常用 VPN 客户端
brew install --cask tunnelblick     # OpenVPN
brew install --cask viscosity        # OpenVPN
brew install --cask wireguard        # WireGuard

# OpenVPN 命令行
brew install openvpn
sudo openvpn --config /path/to/config.ovpn

# WireGuard 命令行
brew install wireguard-tools
wg-quick up /path/to/config.conf

网络共享

互联网共享

text
设置互联网共享:
系统设置 → 通用 → 共享 → 互联网共享

配置步骤:
1. 选择"共享以下来源的连接"
2. 选择"使用以下端口共享给电脑"
3. 点击"启动"

常见用途:
├── 将有线网络共享为 Wi-Fi
├── 将 Wi-Fi 共享给有线设备
└── 创建临时热点

文件共享

bash
# 启用文件共享
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist

# 禁用文件共享
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist

# 配置 SMB 共享
# 系统设置 → 通用 → 共享 → 文件共享

# 查看共享文件夹
sharing -a

# 创建共享点
sudo sharing -a /path/to/folder

# 删除共享点
sudo sharing -r /path/to/folder

# 连接到 SMB 共享
open smb://server/share

屏幕共享

bash
# 启用屏幕共享
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.launchd

# 禁用屏幕共享
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.screensharing.launchd

# 连接到远程屏幕
open vnc://hostname

# 使用命令行 VNC 客户端
brew install --cask vnc-viewer

网络故障排查

常见问题

bash
# 问题:无法连接 Wi-Fi
# 解决步骤:

# 1. 关闭再打开 Wi-Fi
networksetup -setairportpower en0 off
sleep 2
networksetup -setairportpower en0 on

# 2. 删除网络配置并重新连接
sudo networksetup -removepreferredwirelessnetwork en0 "网络名称"
networksetup -setairportnetwork en0 "网络名称" "密码"

# 3. 重置网络设置
sudo rm /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist

# 4. 重启网络服务
sudo ifconfig en0 down
sudo ifconfig en0 up

网络重置

bash
# 刷新 DNS 缓存
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# 重置网络接口
sudo ifconfig en0 down && sudo ifconfig en0 up

# 重启网络服务
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

# 重置 TCP/IP 协议栈
sudo sysctl -w net.inet.tcp.sendspace=65536
sudo sysctl -w net.inet.tcp.recvspace=65536

网络日志

bash
# 查看网络日志
log show --predicate 'subsystem == "com.apple.network"' --last 1h

# 查看 Wi-Fi 日志
log show --predicate 'process == "airportd"' --last 1h

# 查看 DNS 日志
log show --predicate 'subsystem == "com.apple.mDNSResponder"' --last 1h

# 实时监控网络日志
log stream --predicate 'subsystem == "com.apple.network"'

小结

本章介绍了 macOS 网络配置的主要内容:

  1. 网络概述:了解网络接口和配置文件
  2. Wi-Fi 配置:连接和管理无线网络
  3. 以太网配置:设置 IP 和 DNS
  4. 网络诊断:测试和排查网络问题
  5. 高级设置:代理、hosts、防火墙
  6. VPN 配置:设置虚拟专用网络
  7. 网络共享:共享互联网和文件
  8. 故障排查:解决常见网络问题

下一步

下一章我们将学习 磁盘管理,了解 macOS 磁盘和存储管理方法。