Overview
The ip
command in Linux is a powerful utility for managing IP addresses, network interfaces, routing tables, and network namespaces. It provides granular control over various network configurations, making it an essential tool for system administrators.
Syntax
ip addr add|del IFADDR dev IFACE | show|flush [dev IFACE] [to PREFIX]
ip route list|flush|add|del|change|append|replace|test ROUTE
ip link set IFACE [up|down] [arp on|off] [multicast on|off] \
[promisc on|off] [mtu NUM] [name NAME] [qlen NUM] [address MAC] \
[master IFACE | nomaster] [netns PID]
ip tunnel add|change|del|show [NAME] \
[mode ipip|gre|sit] [remote ADDR] [local ADDR] [ttl TTL]
ip neigh show|flush [to PREFIX] [dev DEV] [nud STATE]
ip rule [list] | add|del SELECTOR ACTION
Key Features and Examples
Manage IP Addresses
View IP addresses:
ip addr
Add an IP address to a device:
ip addr add 192.168.1.1/24 dev eth0
Remove an IP address:
ip addr del 192.168.1.1/24 dev eth0
Flush all IP addresses for a device:
ip addr flush dev eth0
Manage Network Devices
Display all network interfaces:
ip link
Show specific device details:
ip link show dev eth0
Bring an interface up or down:
ip link set eth0 up
ip link set eth0 down
Set MTU for a device:
ip link set eth0 mtu 1450
Add or delete a bridge device:
ip link add br0 type bridge
ip link del br0
Create a virtual Ethernet pair:
ip link add veth0 type veth peer name veth1
Manage Routing Tables
Display the main routing table:
ip route show table main
Add a default route:
ip route add default via 10.8.1.1 dev eth0
Add a static route:
ip route add 10.8.1.0/24 via 10.8.1.1
Replace an existing route:
ip route replace 10.8.1.0/24 dev eth0
Flush the routing table:
ip route flush cache
Manage Routing Rules
Show routing rules:
ip rule
Add a rule to use a specific table:
ip rule add from 10.8.1.0/24 table 520
Blackhole traffic from a specific source:
ip rule add from 0/0 blackhole
Manage Network Namespaces
List network namespaces:
ip netns
Create a network namespace:
ip netns add s1
Delete a namespace:
ip netns del s1
Execute a command within a namespace:
ip netns exec s1 ip addr
Example: Setting MTU
MTU (Maximum Transmission Unit) defines the maximum packet size for data transmission on a network device. Adjusting MTU impacts performance and compatibility.
View the current MTU for eth0
:
ip link show eth0
Set MTU to 1450 bytes:
ip link set eth0 mtu 1450
Common MTU Values:
- Ethernet: 1500 bytes (default)
- PPPoE: 1492 bytes (8 bytes for headers)
- Wi-Fi: Often 1500 bytes but can vary slightly.
Quick Tips with ip
Color-coded output:
ip -c addr
ip -c route
Compact display:
ip -brief link
ip -brief addr
For detailed configuration guides, check the official documentation.