Iproute2mac
CLI wrapper for basic network utilites on Mac OS X inspired with iproute2 on Linux systems - ip command.
Install / Use
/learn @brona/Iproute2macREADME
iproute2mac
CLI wrapper for basic network utilities on macOS, inspired by iproute2 on Linux systems – ip, bridge and ss commands
Provided functionality is limited and command output is not fully compatible with [iproute2].
Goal of this project is to make basic network configuration/debug tasks on macOS easy for admins who already use Linux systems.
For advanced usage use netstat, ifconfig, ndp, arp, route and networksetup directly.
If you are interested in contributing, please see our Contribution Guidelines.
Installation
A) [Preferred] Using Homebrew (Maintained by @brona):
# [Optional] Install Homebrew first, see http://brew.sh for options
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install iproute2mac
brew install iproute2mac
See https://formulae.brew.sh/formula/iproute2mac and iproute2mac.rb for mode details.
B) Manual installation from HEAD:
sudo mkdir /usr/local/iproute2mac
sudo chown -R $(whoami):admin /usr/local/iproute2mac
cd /usr/local/
git clone https://github.com/brona/iproute2mac.git
ln -s iproute2mac/src/ip.py /usr/local/bin/ip
ln -s iproute2mac/src/bridge.py /usr/local/bin/bridge
ln -s iproute2mac/src/ss.py /usr/local/bin/ss
C) Using MacPorts (Maintained by @i0ntempest):
See https://ports.macports.org/port/iproute2mac/ and Portfile
D) Using NixOS (Maintained by @jiegec):
See https://search.nixos.org/packages?show=iproute2mac&type=packages&query=iproute2mac and package.nix
Supported commands / Example usage
Goal of this utility is to provide compatible CLI with [iproute2], supporting same command shortcuts and user experience.
- Help
ip helpip link helpip addr helpip route helpip neigh helpbridge helpbridge link helpss help
- Link module (Interfaces)
- List local interfaces
ip link - List interfaces in brief format
ip -br link - Show one interface
ip link show en0 - Shutdown interface
ip link set dev en0 down - Start interface
ip link set dev en0 up - Set custom MAC address
ip link set dev en0 address 00:12:34:45:78:90 - Set random MAC address
ip link set en0 address random - Set factory default MAC address
ip link set en0 address factory - Set MTU
ip link set dev en0 mtu 9000
- List local interfaces
- Neighbour module (ARP/NDP)
- Show all neighbours
ip neigh - Show all IPv4 (ARP) neighbours
ip -4 neigh - Show all IPv6 (NDP) neighbours
ip -6 neigh - Show all IPv4 (ARP) neighbours for a specific interface
ip -4 neigh show dev en0 - Show neighbours filtered by prefix
ip -4 neigh show 192.0.2.0/24 - IPv6 (NDP) neighbours cannot be currently shown for a specific interface
- Flush all neighbours (IPv4 + IPv6) for a specific interface
ip neigh flush dev en0 - Flush all IPv4 (ARP) neighbours for a specific interface
ip -4 neigh flush dev en0 - IPv6 (NDP) neighbours are being flushed for all interfaces
- Show all neighbours
- Address module
- List all addresses
ip addr - List all addresses in brief format
ip -br addr - List IPv4 addresses
ip -4 addr - List IPv6 addresses
ip -6 addr - Add address to interface
ip addr add 10.0.0.5/24 dev en0 - Remove address from interface
ip addr del 10.0.0.5 dev en0
- List all addresses
- Route module
- List IPv4 addresses
ip route - List IPv6 addresses
ip -6 route - Flush route cache (no-op on MacOS)
ip route flush cache - Flush routes
ip route flush table main - Match for specific route
ip route show default - Get route for destination
ip route get 8.8.8.8 - Add static route
ip route add 192.168.0.0/16 nexthop 10.0.0.1 - Add default route
ip route add default nexthop 10.0.0.1 - Replace static route
ip route replace 192.0.2.0/24 dev utun1 - Remove static route
ip route del 192.168.0.0/16
- List IPv4 addresses
- Bridge module
- List bridge interfaces
bridge link - List one bridged interface
bridge link show dev en2
- List bridge interfaces
- Socket Statistics (ss)
- Show all sockets
ss - Show listening sockets
ss -l - Show TCP sockets
ss -t - Show UDP sockets
ss -u - Show IPv4 sockets
ss -4 - Show IPv6 sockets
ss -6 - Show socket statistics
ss -s - Show all sockets (including listening)
ss -a
- Show all sockets
- JSON output
- List interfaces:
ip -j link show - List addresses:
ip -j addr show - List neighbours:
ip -j neigh show - List routes:
ip -j route show - List bridges (with pretty print):
bridge -j -p link show - List sockets:
ss -j
- List interfaces:
- Color output
- Enable colors:
ip -color link show - Force colors:
ip -color=always link show - Auto colors:
ip -color=auto link show - Disable colors:
ip -color=never link show - Same options work for
bridgeandsscommands
- Enable colors:
Changelog
<details open> <summary><b>HEAD</b></summary>- No changes yet
ss -His now supported (--no-header)
- Fixed https://github.com/brona/iproute2mac/issues/77, improved
ipcommand parsing for degenerate cases. - Fixed https://github.com/brona/iproute2mac/issues/76,
ssnow correctly parses getopt style arguments (e.g.ss -nat). - Fixed https://github.com/brona/iproute2mac/issues/73,
ip -4 addrshows only interfaces that have ipv4 address assigned (thanks @pluharok) - Fixed
--and-parsing (https://github.com/brona/iproute2mac/pull/74, thanks @rrotter)
- Fixed
ip routecrashing withIndexError: pop from empty listbug introduced in v1.7.1
ip addrandip linkreturns results inifindexorder (https://github.com/brona/iproute2mac/issues/72)ip addrandip linksupportupfilter (https://github.com/brona/iproute2mac/issues/71)- Added
ip route list [[exact] PREFIX]selector (https://github.com/brona/iproute2mac/issues/66)
- Added
sscommand (https://github.com/brona/iproute2mac/issues/20 ,https://github.com/brona/iproute2mac/pull/70, thanks @luoling8192) - Added
-briefoption for link and address modules (https://github.com/brona/iproute2mac/issues/42 ,https://github.com/brona/iproute2mac/pull/69 thanks @xraystyle) - Added
-onelineoption forlinkandaddrmodules (https://github.com/brona/iproute2mac/issues/17 ,https://github.com/brona/iproute2mac/pull/62 thanks @waketzheng)
- Added
--colorwithauto,alwaysandnevermodes for show commands (https://github.com/brona/iproute2mac/issues/21 and https://github.com/brona/iproute2mac/issues/42, PR https://github.com/brona/iproute2mac/pull/63) - Fixed https://github.com/brona/iproute2mac/issues/68
ip neigh shownot displaying lladdr in the output - Fixed
ip neigh showjson output not matching iproute2 (stateandrouterfields)
- Fixed https://github.com/brona/iproute2mac/issues/56 address parsing for ptp links
- Fixed https://github.com/brona/iproute2mac/issues/21
--coloroption parsing
- Fixed https://github.com/brona/iproute2mac/issues/57
- Fixed https://github.com/brona/iproute2mac/issues/56
- Added
-jsonoption (https://github.com/brona/iproute2mac/issues/49) - Added
bridgecommand - Internal reworking of
ip ... showfunctions
-coloroption is now being ignored (https://github.com/brona/iproute2mac/issues/47, thanks @lexhuismans)- Added support for double dashed options,
e.g.--coloras well as-color ip route addnow ignores 2 additional arguments,
e.g.ip r a 1.1.1.1 via 2.2.2.2 dev utun5is interpreted asip r a 1.1.1.1 via 2.2.2.2(https://github.com/brona/iproute2mac/issues/45)
- Fixed
ip neigh show dev en0(https://github.com/brona/iproute2mac/issues/43, thanks @SimonTate)
- Internal cleanup and code style changes
- Added support for blackhole routes
ip route add blackhole 192.0.2.0/24(thanks @mhio) - :warning:
ip route flush cacheno longer flushes anything ip route flush table mainflushes all routesip neigh show 192.0.2.0/24filters neighbours- Flag compatibility for
-helpand-Version - Uniform matching for show command alternatives
- Migrated to Python 3
- Fixed issues with
ip routeon macOS Catalina (thanks @jiegec) ip routenow returns host addr
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
