ip

来自百合仙子's Wiki
跳转到导航 跳转到搜索
本页主题是名为 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

参见

外部链接

参考资料