---
title: 如何设置静态路由
description: "静态路由（英语：Static routing）是一种路由的方式，路由项（routing entry）由手动配置，而非动态决定。 与动态路由不同，静态路由是固定的，不会改变，即使网络状况已经改变或是重新被组态。 一般来说，静态路由是由网络管理员逐项加入路由表。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Appendices/faq/faq_0051.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Appendices/faq/faq_0051.html
indexId: 6e51178cd4c3b76db1eaf6b5188ad25c4cc87ffebcbcbc3589db6aaadfa352d174
---
# 如何设置静态路由

#### 现象描述

静态路由（英语：Static routing）是一种路由的方式，路由项（routing entry）由手动配置，而非动态决定。 与动态路由不同，静态路由是固定的，不会改变，即使网络状况已经改变或是重新被组态。 一般来说，静态路由是由网络管理员逐项加入路由表。


此处介绍如何配置Atlas 200I DK A2开发者套件的路由。开发者套件具有3个自带的网络设备（2个千兆以太网口和一个Type-C虚拟网口），在以下情况下，需要配置静态路由：

1. 开发者套件需使用了多个网口连接了不同的局域网，需要在各个局域网内都可以访问开发者套件。
2. 开发者套件需要通过某个网口连接外部网络，比如连接互联网，需要设置默认路由。

#### 解决方案

默认设置情况下，如果使用eth0可以连接路由器，由路由器给eth0网口分配IP和路由信息。

若使用PC的网络共享给开发者套件，可以使用eth1网口连接PC，将PC上的WIFI或者其他网口的网络“共享”给开发者套件。Windows下网络共享默认的网段是192.168.137.0/24，PC上被共享的网口（即与开发者套件连接的网口）的IP默认被设置为192.168.137.1/24，所以此处给开发者套件的eth1设置的静态IP为192.168.137.100/24（与192.168.137.1/24同一网段即可），默认网关为192.168.137.1，即产生了一条192.168.137.1的默认路由。
```
(base) root@davinci-mini:
~
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.137.1   0.0.0.0         UG    0      0        0 eth1
```


当将开发者套件放置到某个局域网下的时候，就需要给开发者套件配置静态IP和静态路由，例如将小藤放置到90.0.0.0/8网段下，将开发者套件的eth0接入该局域网。分配给开发者套件的静态IP、网段的网关信息需要咨询该网络的管理员获取，此处以分配IP90.90.128.2为例，子网掩码是23位，路由网段是90.0.0.0/8，通往该路由网段的网关是90.90.128.1。

- Ubuntu操作系统：
可以通过Netplan工具来配置网络，有关Netplan工具的介绍，请参见参考链接(https://netplan.io/)。Netplan通过/etc/netplan/*.yaml文件来对网络进行配置，开发者套件的默认的网络配置文件为/etc/netplan/01-netcfg.yaml。
```
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [90.90.128.2/23]
routes:
- to: 90.0.0.0/8
via: 90.90.128.1
nameservers:
addresses: [8.8.8.8]
addresses: [114.114.14.114]
eth1:
dhcp4: no
addresses: [192.168.137.100/24]
routes:
- to: default
via: 192.168.137.1
nameservers:
addresses: [8.8.8.8]
addresses: [114.114.114.114]
usb0:
dhcp4: no
addresses: [192.168.0.2/24]
routes:
- to: 192.168.0.0/24
via: 192.168.0.1
nameservers:
addresses: [8.8.8.8]
addresses: [114.114.114.114]
```

- 默认路由（Default route），是对IP数据包中的目的地址找不到存在的其他路由时，路由器所选择的路由。 目的地不在路由表里的所有数据包都会使用默认路由。
- 一台主机只能配置一个默认路由，即在网络配置文件当中，以下路由配置信息最多只能出现一次：

```
routes:
- to: default
via: x.x.x.x
```


  x.x.x.x 为默认路由的网关的IP地址。


上述/etc/netplan/01-netcfg.yaml配置文件，eth0接入90.90.128.0/23局域网，eth1接入192.168.137.0/24局域网，usb0接入192.168.0.0/24局域网，每个网口都配置了静态IP和静态路由，默认路由通过eth1接入局域网的网关192.168.137.1。
其中eth0配置的IP为90.90.128.2/23，路由为：

```
routes:
- to: 90.0.0.0/8
via: 90.90.128.1
```

参数解释：

  - routes: 的含义是为该网络设备指定路由，可以是多条路由（多条路即to/via有多个）。
  - - to: 的含义是该条路由的目的地址（网段），即通过route -n 命令查询的Destination项。
  - via: 是指网关，即通往目的地址（网段）所需要经过的设备的IP地址。
执行netplan apply配置生效后，小藤将生成如下的路由信息：

```
(base) root@davinci-mini:
~
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
90.0.0.0        90.90.128.1     255.0.0.0       UG    0      0        0 eth0
```

- OpenEuler操作系统：
  上述/etc/netplan/01-netcfg.yaml配置文件，eth0接入90.90.128.0/23局域网，eth1接入192.168.137.0/24局域网，usb0接入192.168.0.0/24局域网，每个网口都配置了静态IP和静态路由，默认路由通过eth1接入局域网的网关192.168.137.1。其中eth0配置的IP为90.90.128.2/23，路由为90.90.128.1。

```
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.0.2
NETMASK=255.255.254.0
GATEWAY=90.90.128.1
```


  在键盘按Esc键退出编辑状态，输入:wq!保存配置。执行nmcli con reload重加载配置文件，再执行nmcli con up ifcfg-eth1命令激活配置。生成路由如下：

```
-sh-5.1# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
90.0.0.0        90.90.128.1     255.0.0.0       UG    0      0        0 eth0
```


配置正确的路由后，开发者套件就可以与90.90.128.0/23网段外的设备进行通信了，比如与90.254.79.88/32主机进行通信。如果没有正确配置路由信息，将无法与90.90.128.0/23网段外的主机进行通信，这种情况下，开发者套件只能与本局域网内的其他设备进行通信，比如与IP信息为90.90.128.100/23的主机进行通信。当发现开发者套件在局域网内，无法访问外部网络（局域网外的网络）时，请检查IP、掩码、路由信息是否配置正确。必要情况下，请与您的网络管理员确认您的网络配置信息是否正确。
