iproute2(ip命令)

阅读数:268 评论数:0

跳转到新版页面

分类

Linux

正文

一、概述

iproute2用于替代net-tools,二者提供了类似的功能,但使用不同的命令和语法。

虽然 net-tools 命令集在过去被广泛使用,但现在推荐使用 iproute2 命令集中的 ip 命令,因为它提供了更多的功能和更灵活的配置选项。在现代的 Linux 发行版中,iproute2 命令集通常已经预装,并成为默认的网络管理工具。

1、iproute2命令集

iproute2 是一个功能强大的网络配置和管理工具集,其中的主要命令是 ipiproute2 提供了先进的网络功能和更灵活的配置选项,逐渐取代了 net-tools

2、net-tools命令集

net-tools 是早期常用的网络工具集,其中的主要命令包括 ifconfigroute 和 netstat

  • ifconfig 命令用于配置和显示网络接口的信息,包括接口状态、IP 地址、MAC 地址等。
$ ifconfig eth0
  • route 命令用于配置和显示路由表信息,包括添加和删除路由。
$ route add default gw 192.168.0.1
  • netstat 命令用于显示网络状态和统计信息,包括网络连接、监听端口、路由表等。
$ netstat -tuln

3、netplan

可以只装netplan,而不需要安装openvswitch-switch

apt-get install netplan.io

Netplan 是一个用于在 Ubuntu 和其他基于 Debian 的系统上配置网络的工具。它使用 YAML 文件来描述网络接口的配置,并将这些配置应用到系统中。Netplan 支持多种后端,包括 NetworkManager 和 systemd-networkd。

Netplan 可以用来配置 Open vSwitch 的接口和网络拓扑。通过 Netplan,你可以定义 OVS 的桥接、端口和其他网络配置,并将这些配置应用到系统中。

主要特点

  • 简单的 YAML 配置文件格式。
  • 支持多种后端(如 NetworkManager 和 systemd-networkd)。
  • 适用于静态 IP 配置、DHCP、VLAN、桥接和绑定等多种网络配置。

4、openvswitch-switch

在 Ubuntu 系统中,openvswitch-switch 是 Open vSwitch 的一个软件包,它实现了一个多层虚拟交换机,主要用于管理虚拟机网络流量。Open vSwitch 被设计用于大规模多租户托管环境中,如云计算和虚拟化基础设施。

(1)验证本机是否安装

dpkg -l | grep openvswitch-switch

如果未安装

sudo apt install openvswitch-switch

(2)启动

sudo systemctl start ovs-vswitchd.service

(3)如果启动失败

journalctl -xe | grep ovs

(4)重装

sudo apt purge openvswitch-switch
sudo apt install openvswitch-switch

二、ip命令

ip指令可以配置网络接口(link)、接口地址(address)、ARP(neighbour)、路由(route)、路由策略数据库(rule)、隧道(runnel)等

1、ip命令格式

 ip  [OPTIONS]  OBJECT  [COMMAND  [ARGUMENTS] ]

(1)OPTIONS

-V 打印iproute2工具集的版本号
-s 输出更多的信息
-4 ipv4
-6 ipv6
-0 link协议
-o 以单行的形式输出查询结果,原来的换行符用 "\" 替代。

(2)OBJECT

link 物理或者逻辑网络接口
address 网络设备的协议(IPv4和IPv6)地址
neighbour ARP条目相关
route 路由表条目
rule 路由策略数据库规则
tunnel IP隧道

(3)COMMAND

add、delete、show(list)

2、ip link 网络接口配置

(1)ip link set (改变网络设备属性)

set可缩写:s

参数

指定要操作的网络接口 dev NAME (default)
改变接口的状态为UP或是DOWN up / down
改变网络接口的NOARP标志,决定接口能否发arp包 arp on / arp off
改变网络接口MULTICAST标志 multicast on / multicast off
修改网络接口DYNAMIC标志 dynamic on / dynamic off
修改网络接口名 name NAME
修改网络接口的发送队列长度 txqueuelen NUMBER / txqlen NUMBER
修改网络接口的MTU mtu NUMBER
修改网络接口的MAC地址 address LLADDRESS
修改广播地址 broadcast LLADDRESS,brd LLADDRESS or peer LLADDRESS

示例

ip link set br0 up

ip link set br0 name lan

ip link set br0 mtu 1500

ip link set br0 address 4E:0C:BC:44:4C:A2  

(2)ip link show (查看网络设备属性)

show可改写:list,list, sh, ls,l

参数

显示指定网络接口,省略NAME,则显示所有接口 dev  NAME (default)
显示所有在运行的网络接口 up

示例

        ip link show dev br0

        ip link show br0

        ip link ls br0

        ip link l br0

3、ip address (协议地址管理)

address可以缩写为addr或a

(1)ip address add (添加新的协议地址)注意这种方式配置的ip,重启后会失效

add可以缩写: a

参数

添加地址的接口 dev NAME
接口的地址 local ADDRESS (default)
用于pointtopoint接口,设置对端接口地址 peer ADDRESS
设置接口的广播地址 broadcast ADDRESS

示例

        ip address add 192.168.100.5/24 dev lan

        ip addr add 192.168.100.10/24 dev lan

        ip a add 192.168.100.10/24 dev lan

永久配置IP

  • 在/etc/netplan/目录下的yml文件 
# Let NetworkManager manage all devices on this system
network:                   # 网络
  version: 2               # 版本
  renderer: NetworkManager # 渲染器
  ethernets:               # 以太网
    ens33:
      addresses: [192.168.142.129/24]
      dhcp4: false
      dhcp6: false
      routes:
        - to: default
          via: 192.168.142.2 # 默认网关
      nameservers:               # 域名服务器
        addresses: [8.8.8.8, 114.114.114.114]

如果不配置域名服务器,会无法访问外网

renderer: NetworkManager 可能会因为你是桌面版和无桌面版有所不一样,无桌面版应该是 networkd

sudo netplan apply

如果报错

Permissions for /etc/netplan/01-network-manager-all.yaml  are too open. Netplan configuration should NOT be accessible by others.

这是由于你开放权限太高导致的,这时,我们就需要通过chmod命令来修改当前文件的权限了。

chmod 0600 01-network-manager-all.yaml 

修改ip后,ssh连接时,可能需要手动删除之前连接过的机器记录(ssh-keygen)。

配置多个网关

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      match:
        macaddress: 00:11:22:33:44:55
      routes:
        - to: 192.168.1.0/24
          via: 192.168.0.1
          table: 100
        - to: 10.0.0.0/24
          via: 10.0.0.1
          table: 200

(2)ip address delete (删除地址)

delete可缩写:del,d

示例

        ip address del 192.168.100.5/24 dev br0

        ip addr del 192.168.100.5/24 dev br0

(3)ip address show (查看ip地址)

show可改写为:list, lst, sh, ls, l

参数

指定网络设备名称 dev NAME (default
列出指定scope的地址 scope SCOPE_VAL
列出指定指定前缀的地址 to PREFIX 

示例

~ # ip addr show to 192.168.100.5
6: lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    inet 192.168.100.5/32 scope global lan
       valid_lft forever preferred_lft forever
    inet 192.168.100.5/24 scope global secondary lan
       valid_lft forever preferred_lft forever

(4)ip address flush(删除接口的ip地址)

flush缩写:f

示例

       ip address flush dev br0 

        ip a flush dev br0

4、ip neighbour (arp表管理)

neighbour可缩写:neighbor, neigh, n

(1)ip neighbour add (添加新的arp条目)

add缩写: a

(2)ip neighbour change(修改存在的条目)

change缩写: chg

(3)ip neighbour replace (添加新的或修改一个存在的条目)

replace缩写repl

前三者的参数相同

指定ARP的IP地址,IPv4或IPv6地址 to ADDRESS (default)
指定ARP表绑定的接口 dev NAME
指定ARP的MAC地址 lladdr LLADDRESS

ARP条目的状态,NUD是"Neighbour Unreachability Detection",状态有以下几个:

- permanent :添加的ARP表条目永久有效,除非手动操作移除

- noarp :此ARP条目是有效的,但是不会尝试去验证它。生存周期到了将会被移除

- reachable :可达性超时时间之前,ARP条目都有效

- stale :ARP条目有效,但是是可疑的。如果一个ARP条目本来就有效的,此选项不会改变条目的状态,地址也不会被改变

nud NUD_STATE

示例

 ip neighbour add 192.168.100.4 lladdr 42:a9:7f:86:22:5c dev lan

(4)ip neighbour delete (删除arp条目)

delete缩写: del, d

示例

 ip neigh del 192.168.100.5 dev br0

(5)ip neighbour show(显示arp条目)

show改写:list, sh, ls

参数

显示以ADDRESS前缀的ARP表 to ADDRESS (default)
只显示网络接口NAME的ARP表 dev NAME

示例

  ip neigh show

(6) ip neighbour flush(清空arp表)

flush缩写: f

示例

ip neighbour f dev br0

5、ip route (路由表管理)

路由表定义了数据包的传输路径。每个路由表包含一系列路由条目,每个条目定义了如何将数据包从一个网络传输到别一个网络。

route缩写: ro, r

(1)ip route add (添加新的路由)

(2)ip route change (修改路由)

(3)ip route replace (修改已有路由或添加新路由)

三者参数:

路由的preference值 metric NUMBER or preference NUMBER
路由添加的路由表,可以是数字或字符串,字符串对应的数字参考/etc/iproute2/rt_tables table TABLEID
路由的网络接口 dev NAME
路由的下一跳地址 via ADDRESS
指定路由的原地址 src ADDRESS

示例

        ip route add 10.0.0/24 via 192.168.10.10

        ip route add default dev eth1 via 192.168.10.10

(4)ip route delete (删除路由)

delete缩写: del , d

示例

ip route del default

(5)ip route show (查看路由)

show可:list, sh, ls, l

示例

        ip route show 

        ip route show table 400

6、ip rule (路由策略数据库管理)

路由策略定义了选择哪个路由表来决定数据包的传输路径。策略路由允许根据数据包的特定属性(如源地址、目的地址、TOS等)来选择不同的路由表。

rule可缩写: ru

(1)ip rule add (插入新rule)

add可缩写: a

(2)ip rule delete (删除rule)

delete可缩写: del, d

示例

[root@192 ~]# ip rule add from all table 400 fwmark 400 priority 400

[root@192 ~]# ip rule show
400:    from all fwmark 0x190 lookup 400 

假设你有两个网络接口 eth0eth1,分别连接到两个不同的网络。你希望来自 192.168.1.0/24 网络的数据包通过 eth0 传输,而来自 192.168.2.0/24 网络的数据包通过 eth1 传输。

配置两个路由表

# 路由表 100: 用于 eth0
ip route add 192.168.1.0/24 dev eth0 table 100
ip route add default via 192.168.1.1 dev eth0 table 100

# 路由表 200: 用于 eth1
ip route add 192.168.2.0/24 dev eth1 table 200
ip route add default via 192.168.2.1 dev eth1 table 200

配置策略路由规则

# 来自 192.168.1.0/24 的流量使用路由表 100
ip rule add from 192.168.1.0/24 table 100

# 来自 192.168.2.0/24 的流量使用路由表 200
ip rule add from 192.168.2.0/24 table 200

对应的yaml文件

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.2/24
      routes:
        - to: 0.0.0.0/0
          via: 192.168.1.1
          table: 100
        - to: 192.168.1.0/24
          via: 192.168.1.1
          table: 100
      routing-policy:
        - from: 192.168.1.0/24
          table: 100

    eth1:
      dhcp4: no
      addresses:
        - 192.168.2.2/24
      routes:
        - to: 0.0.0.0/0
          via: 192.168.2.1
          table: 200
        - to: 192.168.2.0/24
          via: 192.168.2.1
          table: 200
      routing-policy:
        - from: 192.168.2.0/24
          table: 200

7、ip tunnel (ip隧道)

tunnel缩写: tunl

(1)ip tunnel add (创建隧道)

add缩写: a

参数

选择隧道网络接口名 name NAME (default)
设置隧道模式,有ipip,sit,gre模式 mode MODE
设置隧道对端的地址 remote ADDRESS
设置隧道本地地址 local ADDRESS
绑定隧道到一个网络接口,隧道的包将会通过此接口路由出去 dev NAME

示例

ip tunl add cisco mode sit remote 10.0.0.10 local 10.0.0.1 ttl 32

(2)ip tunnel show (查看隧道)

show可: list, sh, ls, l

示例

ip tunl show
cisco: ipv6/ip remote 10.0.0.10 local 10.0.0.1 ttl 32 6rd-prefix 2002::/16

三、ss命令

http://1024s.top/mbstudy/mbBlog/blogDetail?blogId=94




相关推荐

一、概述 net-tools起源于BSD的TCP/IP工具箱,后来成为版本Linux内核中配置网络功能的工具,但从2001起,Linux社区已经对其停止维护。同时一些Linux发行版也已经完全抛弃了n

以网口eth0为例。 1、vim /etc/sysconfig/network-scripts/ifcfg-eth0 2、具体内容 <pre class="l

说明:这种方式只是用于方便阅读代码,因为可以在源代间快速索引跳跃。但是最后可能会有一些warning,可以不必关心,如果是强迫症,可以使用下面这种方式来去掉。

一、概述 /etc/hosts.allow和/etc/hosts.deny这两个文件是tcpd服务器的配置文件控制外部IP对tcpd服务器的访问。 /etc/hosts.allow控制可以访问本机的I

一、概述 gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。 二、语法 gzip[参数][文件或者目录] -a或--ascii 使用ASCII文字模式。

一、概述 ifconfig(interfaces config),ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。 如果命令不存在,需要安装包 yu

一、概述 通过route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。 route命令是用于操

一、概述 traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。 二、语法 traceroute[参数][主机] traceroute [-dFlnrv

一、概述 netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 如果命令不可用,需要安装 yum install net-tools 二、语

1.通过官方下载linux版本的安装包(这里使用2019.1版本) 2、向datagrip64.vmoptions添加 <pre class="language-marku