Appearance
网络配置
本章将介绍 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/hostsWi-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 en0Wi-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" onhosts 文件
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.appVPN 配置
系统 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 网络配置的主要内容:
- 网络概述:了解网络接口和配置文件
- Wi-Fi 配置:连接和管理无线网络
- 以太网配置:设置 IP 和 DNS
- 网络诊断:测试和排查网络问题
- 高级设置:代理、hosts、防火墙
- VPN 配置:设置虚拟专用网络
- 网络共享:共享互联网和文件
- 故障排查:解决常见网络问题
下一步
下一章我们将学习 磁盘管理,了解 macOS 磁盘和存储管理方法。
