.. _ip:
===============
ip
===============
现代Linux系统已经使用高级路由设置命令 ``ip`` 来完成网络配置,很多时候,默认都没有安装 ``ifconfig`` 这样的传统工具,所以有必要更新自己的知识体系,学习这个强大的工具。
- 语法::
ip OBJECT COMMAND
ip [options] OBJECT COMMAND
ip OBJECT help
ip命令还支持对象语法缩写,例如 ``link`` 缩写成 ``l`` , ``address`` 缩写成 ``a`` 或者 ``addr`` , ``addrlabel`` 缩写成 ``addrl`` 。
可以通过 ``-4`` 表示 ``IPv4`` 或者 ``-6`` 表示 ``IPv6`` ::
# 显示TCP/IP IPv4
ip -4 a
# 显示TCP/IP IPv6
ip -6 a
- 检查网卡::
ip link list
- 设置网卡IP::
ip address add 192.168.2.2/24 dev enp0s25
缩写::
ip a add 192.168.2.2/24 dev enp0s25
默认情况下ip命令不设置任何广播地址,除非明确要求,以下语法设置广播地址::
ip addr add brd {ADDDRESS-HERE} dev {interface}
ip addr add broadcast {ADDDRESS-HERE} dev {interface}
ip addr add broadcast 172.20.10.255 dev dummy0
- 删除地址::
ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}
举例::
ip a del 192.168.2.2/24 dev enp0s25
此外,还支持 ``flush`` 命令一次性将接口上所有地址或一段地址都移除,例如以下移除 192.168.2.0/24 网段地址::
ip -s -s a f to 192.168.2.0/24
也可以把所有 ppp(Point-to-Point)接口上所有地址禁用::
ip -4 addr flush label "ppp*"
或者所有以太网接口::
ip -4 addr flush label "eth*"
- 启动网卡::
ip link enp0s25 up
关闭网卡::
ip link enp0s25 down
路由
=======
- 检查路由::
ip route show
ip route list
ip r
ip r list
ip r list [options]
ip route
- 设置默认路由::
ip route add default via 192.168.2.1
- 添加静态路由::
ip route add 192.168.3.0/24 via 192.168.2.1 dev eth0
类似语法可以使用::
ip route add {NETWORK/MASK} via {GATEWAYIP}
ip route add {NETWORK/MASK} dev {DEVICE}
ip route add default {NETWORK/MASK} dev {DEVICE}
ip route add default {NETWORK/MASK} via {GATEWAYIP}
- 删除路由::
ip route delete 192.168.3.0/24 dev eth0
删除默认路由::
ip route del default
.. note::
Debian/Ubuntu 配置文件添加静态路由是 ``/etc/network/interfaces`` ::
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.2.24
gateway 192.168.2.254
CentOS/RHEL 添加静态路由是 ``/etc/sysconfig/network-scripts/route-eth0`` ::
10.105.28.0/24 via 10.105.28.1 dev eth0
然后重启网络服务::
systemctl restart network
调整网卡参数
=============
- 修改网卡设备的tx队列长度::
ip link set txqueuelen {NUMBER} dev {DEVICE}
通过 ``ip addr list {DEVICE}`` 可以查看设备的txquenelen队列长度::
ip link set txqueuelen 10000 dev eth0
ip addr list eth0
- 修改网络设备MTU::
ip link set mtu {NUMBER} dev {DEVICE}
举例,修改eth0的MTU为9000::
ip link set mtu 9000 dev eth0
ip a list eth0
- 显示neighbour/arp表::
ip n show
ip neigh show
举例::
ip n show
显示arp缓存如下(这里显示的是网关)::
10.15.237.254 dev wlp3s0 lladdr 58:69:6c:31:a3:17 REACHABLE
- 添加ARP::
ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}
举例::
ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm
删除ARP::
ip neigh del {IPAddress} dev {DEVICE}
ip neigh del 192.168.1.5 dev eth1
- 刷新ARP表::
ip -s -s n f {IPAddress}
举例,刷新192.168.1.5::
ip -s -s n f 192.168.1.5
ip -s -s n flush 192.168.1.5
参考
=====
- `Linux ip Command Examples `_
- `Linux Set Up Routing with ip Command `_
- `ip command in Linux with examples `_
- `ip COMMAND CHEAT SHEET for Red Hat Enterprise Linux `_ - Red Hat提供的ip命令简明查询手册,基本覆盖了常用使用案例