ip
跳转到导航
跳转到搜索
本页主题是名为 ip 的网络命令,关于其它义项,见 IP (消歧义)。
示例
使用 ip 命令联网
ip link set dev enp0s3 up
ip addr add 192.168.1.111/24 dev enp0s3
ip route add default via 192.168.1.1
断网:
ip addr flush dev enp0s3
ip link set dev enp0s3 down
一个 systemd 配置:
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-enp0s3.device
After=sys-subsystem-net-devices-enp0s3.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set dev enp0s3 up
ExecStart=/sbin/ip addr add 192.168.1.111/24 dev enp0s3
ExecStart=/sbin/ip route add default via 192.168.1.1
ExecStop=/sbin/ip addr flush dev enp0s3
ExecStop=/sbin/ip link set dev enp0s3 down
[Install]
WantedBy=multi-user.target
双网络路由
需要对次要网络添加额外的路由表,以便能从次要网络地址提供服务。
在 /etc/iproute2/rt_tables
添加一个新的路由表,如
2 wlan0
然后配置(每次连接之后均需配置)
sudo ip route add default via 192.168.40.1 dev wlan0 src 192.168.40.211 metric 303 table wlan0
sudo ip route add 192.168.40.0/22 dev wlan0 src 192.168.40.211 table wlan0
sudo ip rule add from 192.168.40.211 table wlan0
获取外网 IP
ip a | grep -oP '(?<=inet )(?!127\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|10\.)[\d.]+'
# 同时支持 IPv6
ip -j addr show scope global | jq -r '.[] | .addr_info | .[] | select(.local).local' | grep -vP '^(127\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|10\.|f[cd]\d\d)'
显示网桥上的设备
ip link show master br0