$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ether 04:25:c5:02:b8:a3 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 04:25:c5:02:b8:a4 brd ff:ff:ff:ff:ff:ff
激活或停用网络接口
使用这些命令来激活或停用某个指定的网络接口。
使用 net-tools:
1 2
$ sudo ifconfig eth1 up $ sudo ifconfig eth1 down
使用 iproute2:
1 2
$ sudo ip link set down eth1 $ sudo ip link set up eth1
创建与删除网络接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$ ip link add [link DEV] [ name ] NAME [ txqueuelen PACKETS ] [ address LLADDR ] [ broadcast LLADDR ] [ mtu MTU ] [ numtxqueues QUEUE_COUNT ] [ numrxqueues QUEUE_COUNT ] type TYPE [ ARGS ] $ ip link delete { DEVICE | dev DEVICE | group DEVGROUP } type TYPE [ ARGS ] TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap | bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan | gre | gretap | ip6gre | ip6gretap | vti | nlmon | bond_slave | geneve | bridge_slave | macsec }
示例如下:
1 2 3 4 5 6 7 8
# 在 eth0 上创建 ipvlan 设备 ipv1 $ ip link add link eth0 ipv1 type ipvlan mode l3 # 在 eth0 上创建 macvlan 设备 macv1 $ ip link add link eth0 name macv1 type macvlan mode bridge # 创建 bridge 设备 br0 $ ip link add br0 type bridge # 创建 veth pair veth0/1 $ ip link add veth0 type veth peer name veth1
$ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1 $ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1 $ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1
$ ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 04:25:c5:02:b8:a4 brd ff:ff:ff:ff:ff:ff inet 9.51.26.196/26 brd 9.51.26.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::625:c5ff:fe02:b8a4/64 scope link valid_lft forever preferred_lft forever
$ cat /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec
可以分别查看各个表的路由情况:
1 2 3 4 5 6 7 8 9 10
# 查看本地路由表 # 此输出中的第一个字段告诉我们该路由是针对该计算机本地托管的广播地址还是IP地址或范围。 # 随后的字段会通知我们目标可通过哪个设备到达,并且特别是(在此表中)内核已添加了这些路由,作为建立IP层接口的一部分 $ ip route show table local broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 9.51.26.193 0.0.0.0 UG 0 0 0 eth1 9.0.0.0 9.51.26.193 255.0.0.0 UG 0 0 0 eth1 9.51.26.192 0.0.0.0 255.255.255.192 U 100 0 0 eth1 10.0.0.0 9.51.26.193 255.0.0.0 UG 0 0 0 eth1 $ netstat -rn
使用iproute2:
1 2 3 4 5 6 7 8
$ ip route show default via 9.51.26.193 dev eth1 9.0.0.0/8 via 9.51.26.193 dev eth1 9.51.26.192/26 dev eth1 proto kernel scope link src 9.51.26.196 metric 100 10.0.0.0/8 via 9.51.26.193 dev eth1 10.200.0.0/26 via 10.200.0.49 dev cilium_host src 10.200.0.49 10.200.0.49 dev cilium_host scope link 10.200.0.64/26 via 10.200.0.49 dev cilium_host src 10.200.0.49 mtu 1450
$ arp -an ? (9.51.26.193) at 5c:c9:99:dc:54:27 [ether] on eth1 ? (9.51.26.245) at e0:4f:43:ed:a1:e5 [ether] on eth1 ? (9.51.26.204) at e0:4f:43:ed:a4:13 [ether] on eth1 ? (9.51.26.216) at e0:4f:43:ed:89:6d [ether] on eth1 ? (9.51.26.214) at e0:4f:43:ed:79:29 [ether] on eth1 ? (9.51.26.208) at 80:d4:a5:b7:4d:26 [ether] PERM on eth1
使用iproute2:
1 2 3 4 5 6 7
$ ip neigh 9.51.26.193 dev eth1 lladdr 5c:c9:99:dc:54:27 REACHABLE 9.51.26.245 dev eth1 lladdr e0:4f:43:ed:a1:e5 REACHABLE 9.51.26.204 dev eth1 lladdr e0:4f:43:ed:a4:13 STALE 9.51.26.216 dev eth1 lladdr e0:4f:43:ed:89:6d STALE 9.51.26.214 dev eth1 lladdr e0:4f:43:ed:79:29 STALE 9.51.26.208 dev eth1 lladdr 80:d4:a5:b7:4d:26 PERMANENT
$ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0 $ sudo ip neigh del 192.168.1.100 dev eth0
添加、删除或查看多播地址
使用下面的命令配置或查看网络接口上的多播地址。
使用net-tools:
1 2 3
$ sudo ipmaddr add 33:44:00:00:00:01 dev eth0 $ sudo ipmaddr del 33:44:00:00:00:01 dev eth0 $ ipmaddr show dev eth0$ netstat -g
使用iproute2:
1 2 3
$ sudo ip maddr add 33:44:00:00:00:01 dev eth0 $ sudo ip maddr del 33:44:00:00:00:01 dev eth0 $ ip maddr list dev eth0
ip netns
1 2 3 4 5 6 7 8 9 10
Usage: ip netns list ip netns add NAME ip netns attach NAME PID ip netns set NAME NETNSID ip [-all] netns delete [NAME] ip netns identify [PID] ip netns pids NAME ip [-all] netns exec [NAME] cmd ... ip netns monitor ip netns list-id