Skip to content

Instantly share code, notes, and snippets.

@ssrlive
Last active October 2, 2023 08:41
Show Gist options
  • Save ssrlive/325ff97031ac05abd1a45e4514f39223 to your computer and use it in GitHub Desktop.
Save ssrlive/325ff97031ac05abd1a45e4514f39223 to your computer and use it in GitHub Desktop.
macOS 路由表 tips
# 为虚拟网络接口 utun0 配置 IP 地址 10.0.0.33 和子网掩码 255.255.255.0 网关地址 10.0.0.1
sudo ifconfig utun0 10.0.0.33 10.0.0.1 netmask 255.255.255.0

# 配置目标地址是网段 192.168.1.0/24 的流量走 10.0.0.1 网关
sudo route add 192.168.1.0/24 10.0.0.1

# 将 6.11.20.10 这个单一地址(因为掩码是 32)路由到 192.168.4.1 这个网关
sudo route add 6.11.20.10/32 192.168.4.1

# 将上面这条路由删除
sudo route delete 6.11.20.10

# 删除默认路由
sudo route delete 0.0.0.0

# 将网关 192.168.4.1 设置为默认路由
sudo route add -net 0.0.0.0 192.168.4.1

# 将 8.8.8.8 路由到网关 10.0.0.1
sudo route -n add -net 8.8.8.8 10.0.0.1

# ======== 如何在 macOS 上添加静态路由 =========
https://sysin.org/blog/static-routing/#macOS-7

macOS

1、添加路由命令(临时)

与 Linux 类似,但是网关没有 gw 参数(同 FreeBSD)

# 查看当前路由表
netstat -rn

# 获取默认路由
route get 0.0.0.0

# 删除默认路由
sudo route -n delete default 10.2.0.1

# 添加默认路由
sudo route add -net 0.0.0.0 10.2.0.1

# 添加静态路由 (sysin)
sudo route add -net 10.16.0.0 10.18.18.10
sudo route add -net 10.16.0.0/16 10.18.18.10
sudo route -n add -net 192.168.2.0 -netmask 255.255.255.0 192.168.5.254
  1. 使用 networksetup 命令设置永久静态路由

可以适用于 macOS Big Sur。

macOS 提供了一个名为 networksetup 的命令行界面,它允许您进行各种网络配置。

可以通过 networksetup –help 查看具体的帮助。其实它就是 “系统偏好设置” 中网络设置工具的命令行版本,但是功能更为强大一些。

使用 networksetup 命令添加永久静态路由,如下:

# 语法
networksetup -getadditionalroutes <networkservice>
networksetup -setadditionalroutes <networkservice> [ <dest> <mask> <gateway> ]

# 查看 <networkservice>
networksetup -listallnetworkservices
# 这里显示如下
Wi-Fi
iPhone USB
Bluetooth PAN
Thunderbolt Bridge

# 添加静态路由
networksetup -setadditionalroutes "Wi-Fi" 10.18.1.0 255.255.255.0 192.168.1.1
networksetup -setadditionalroutes "Wi-Fi" 10.16.0.0 255.255.0.0 192.168.1.1

解释:

“Wi-Fi” 指定路由走哪个设备(使用命令 networksetup -listallnetworkservices 查看当前的设备) 10.18.1.0/2410.16.0.0 都指向 192.169.1.1

验证:

使用 netstat -nr 查看路由表。

清空路由:networksetup -setadditionalroutes Wi-Fi

再次用 netstat -rn 查看路由可以看到添加的路由没有了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment