[转帖]静态路由实例:如何在 macOS、FreeBSD、Linux、Windows、Cisco 和 VMware 上添加静态路由

静态,路由,实例,如何,macos,freebsd,linux,windows,cisco,vmware,添加 · 浏览次数 : 0

小编点评

**网络配置步骤:** 1. 创建路由前缀: ``` sudo route add -net 10.10.12.0/24 gw 10.10.15.1 dev eth0up sudo route add -net 10.10.13.0/24 gw 10.10.15.1 dev eth0up sudo route add -net 10.10.14.0/24 gw 10.10.15.1 dev eth0up sudo route add -net 10.10.15.0/24 gw 10.10.15.1 dev eth0up ``` 2. 创建路由规则: ``` sudo route add -net 10.10.12.0/24 gw 10.10.15.1 GatewayOnlink=true sudo route add -net 10.10.13.0/24 gw 10.10.15.1 GatewayOnlink=true sudo route add -net 10.10.14.0/24 gw 10.10.15.1 GatewayOnlink=true sudo route add -net 10.10.15.0/24 gw 10.10.15.1 GatewayOnlink=true ``` 3. 启动网络服务: ``` sudo systemctl restart systemd-networkd ``` 4. 验证 IP 路由: ``` ip routeVMware Photon OSvCenter Server 6.x/7.0用于 vRealize 8.x 系列产品(3.0),vSphere_Replication(2.0),SRM(2.0) ```

正文

https://sysin.org/blog/static-routing/

学习一下呢. 

 


router

本文描述主流系统和产品添加静态路由的方法,一些具备 WEB 管理界面的产品不在讨论范围,比如防火墙、路由器等多数产品具备直观的操作界面。

macOS

1、添加路由命令(临时)

与 Linux 类似,但是网关没有 gw 参数(同 FreeBSD)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看当前路由表
netstat -rn

# 获取默认路由
route get 0.0.0.0

# 删除默认路由
sudo route -n delete default 10.2.0.1

# 添加默认路由
sudo route add -net 0.0.0.0 10.2.0.1

# 添加静态路由 (sysin)
sudo route add -net 10.16.0.0 10.18.18.10
sudo route add -net 10.16.0.0/16 10.18.18.10
sudo route -n add -net 192.168.2.0 -netmask 255.255.255.0 192.168.5.254

2、使用 networksetup 命令设置永久静态路由

可以适用于 macOS Big Sur。

macOS 提供了一个名为 networksetup 的命令行界面,它允许您进行各种网络配置。

可以通过 networksetup –help 查看具体的帮助。其实它就是 “系统偏好设置” 中网络设置工具的命令行版本,但是功能更为强大一些。

使用 networksetup 命令添加永久静态路由,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 语法
networksetup -getadditionalroutes <networkservice>
networksetup -setadditionalroutes <networkservice> [ <dest> <mask> <gateway> ]

# 查看 <networkservice>
networksetup -listallnetworkservices
# 这里显示如下
Wi-Fi
iPhone USB
Bluetooth PAN
Thunderbolt Bridge

# 添加静态路由
networksetup -setadditionalroutes "Wi-Fi" 10.18.1.0 255.255.255.0 192.168.1.1
networksetup -setadditionalroutes "Wi-Fi" 10.16.0.0 255.255.0.0 192.168.1.1

解释:

  • “Wi-Fi” 指定路由走哪个设备(使用命令 networksetup -listallnetworkservices 查看当前的设备)
  • 10.18.1.0/24 和 10.16.0.0 都指向 192.169.1.1

验证:

使用 netstat -nr 查看路由表。

清空路由:

1
networksetup -setadditionalroutes Wi-Fi

再次用 netstat -rn 查看路由可以看到添加的路由没有了。

FreeBSD

临时:

1
route add -net 10.10.1.0/24 10.10.1.1

与 Linux 类似,但是网关没有 gw 参数(同 macOS)

永久:

1
vi /etc/rc.conf

Set default router IP to 60.1.2.3:

1
defaultrouter="60.1.2.3"

Create static routing for lan network 192.168.1.0/24, append following two lines:

1
2
static_routes="lan"
route_lan="-net 192.168.1.0/24 192.168.1.254"

How do I add multiple static routes (sysin)?

networkrouter IP
lan (192.168.1.0/24) 192.168.1.254
mumoffice (10.0.0.0/8) 10.30.110.5
foo 169.254.1.1 via loopback (lo0)

Add following to /etc/rc.conf

1
2
3
4
static_routes="lan mumoffice foo"
route_lan="-net 192.168.1.0/24 192.168.1.254"
route_mumoffice="-net 10.0.0.0/8 10.30.110.5"
route_foo="-host 169.254.1.1 -iface lo0"

Windows

1
2
3
4
5
route add -p 10.0.0.0 mask 255.0.0.0 10.10.16.1
// -p 参数永久添加,不用 -p 为临时生效
route add -p 10.10.11.0 mask 255.255.255.0 10.10.12.1
route add -p 10.10.13.0 mask 255.255.255.0 10.10.12.1
route add -p 10.10.14.0 mask 255.255.255.0 10.10.12.1

Cisco

Cisco IOS、IOS-XE

1
2
ip route 10.0.0.0 255.0.0.0 10.10.200.2254
ip route 10.10.11.0 255.255.255.0 10.10.12.1

Cisco NX-OS

1
2
N7K(config)#vrf context management
N7K(config-vrf)# ip route 0.0.0.0/0 <下一跳 IP>

Linux

Linux(通用,临时)

1
route add -net 10.10.11.0/24 gw 10.10.1.1

CentOS(永久)

推荐方式:

1
2
3
4
5
6
7
echo '
10.10.12.0/24 via 10.10.15.1
10.10.13.0/24 via 10.10.15.1
10.10.14.0/24 via 10.10.15.1
10.10.15.0/24 via 10.10.15.1
10.10.16.0/24 via 10.10.15.1
' > /etc/sysconfig/network-scripts/route-eth0

另外一种方法:使用 network.service(CentOS7 默认,CentOS8 需要 yum install network-scripts

1
2
3
4
5
6
echo '
any net 10.10.13.0/24 gw 10.10.15.1
any net 10.10.14.0/24 gw 10.10.15.1
any net 10.10.15.0/24 gw 10.10.15.1
any net 10.10.16.0/24 gw 10.10.15.1
' > /etc/sysconfig/static-routes

验证

1
ip route

Debian(永久)

Debian 11:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#添加
cat >> /etc/network/interfaces <<EOF
# static routes
up ip route add 10.10.12.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.13.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.14.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.15.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.16.0/24 via 10.10.1.1 dev eth0
EOF

#重启网络
systemctl restart networking

#验证 (sysin)
ip route

Ubuntu 16.04(永久)

16.04

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#添加
cat >> /etc/network/interfaces <<EOF
# static routes
up route add -net 10.10.12.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.13.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.14.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.15.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.16.0/24 gw 10.10.15.1 dev eth0
EOF

#重启网络
service networking restart

#验证
ip route

NetPlan(永久)

Ubuntu 18.04、20.04 及以上

18.04: /etc/netplan/50-cloud-init.yaml

20.04:/etc/netplan/00-installer-config.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
network:
version: 2
ethernets:
eth0:
addresses:
- 10.10.15.5/24
gateway4: 10.10.15.1
nameservers:
addresses:
- 10.10.15.11
- 10.10.15.12
search:
- sysin.org
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 注释 gateway4
sed -i 's/gateway4.*/#&/' /etc/netplan/00-installer-config.yaml
# 追加静态路由
cat >> /etc/netplan/00-installer-config.yaml <<EOF
routes:
- to: 0.0.0.0/0
via: 10.10.15.254
metric: 100
- to: 10.10.12.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.13.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.14.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.15.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.16.0/24
via: 10.10.15.1
metric: 100
EOF

metric:为路由指定所需跃点数的整数值(范围是 1 ~ 9999),Metric 的值越小,优先级越高。

完整配置示例(> 覆盖)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cat > /etc/netplan/00-installer-config.yaml <<EOF
network:
version: 2
ethernets:
eth0:
addresses:
- 10.10.15.57/24
#gateway4: 10.10.15.254
nameservers:
addresses:
- 10.10.15.11
- 10.10.15.12
search:
- sysin.org
routes:
- to: 0.0.0.0/0
via: 10.10.15.254
metric: 100
- to: 10.10.12.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.13.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.14.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.15.0/24
via: 10.10.15.1
metric: 100
- to: 10.10.16.0/24
via: 10.10.15.1
metric: 100
EOF
  • 多网关
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 9.0.0.9/24
- 10.0.0.10/24
- 11.0.0.11/24
#gateway4: # unset, since we configure routes below
routes:
- to: 0.0.0.0/0
via: 9.0.0.1
metric: 100
- to: 0.0.0.0/0
via: 10.0.0.1
metric: 100
- to: 0.0.0.0/0
via: 11.0.0.1
metric: 100
1
netplan apply

补充:yaml 基础

1
2
3
4
大小写敏感
使用缩进表示层级关系
缩进时不允许使用 Tab 键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

缩进建议使用 2 个空格,使用短横线 “-” 表示列表时,”- “后面的条目需要对齐,如果使用超过 2 个空格缩进,格式将有误。

VMware

VMware ESXi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#查看路由
esxcfg-route -l
#添加
esxcli network ip route ipv4 add --gateway 10.10.15.1 --network 10.10.12.0/24
esxcli network ip route ipv4 add --gateway 10.10.15.1 --network 10.10.13.0/24
esxcli network ip route ipv4 add --gateway 10.10.15.1 --network 10.10.14.0/24
esxcli network ip route ipv4 add --gateway 10.10.15.1 --network 10.10.15.0/24
esxcli network ip route ipv4 add --gateway 10.10.15.1 --network 10.10.16.0/24
#删除默认路由
esxcli network ip route ipv4 remove -n 0.0.0.0/0 -g 10.10.15.1
#恢复默认路由
esxcli network ip route ipv4 add --gateway 10.10.15.254 --network 0.0.0.0/0
#查看路由 (sysin)
esxcfg-route -l
1
2
3
4
5
6
7
8
9
10
11
12
13
esxcfg-route -l

esxcli network ip route ipv4 add --gateway 10.10.14.1 --network 10.10.12.0/24
esxcli network ip route ipv4 add --gateway 10.10.14.1 --network 10.10.13.0/24
esxcli network ip route ipv4 add --gateway 10.10.14.1 --network 10.10.14.0/24
esxcli network ip route ipv4 add --gateway 10.10.14.1 --network 10.10.15.0/24
esxcli network ip route ipv4 add --gateway 10.10.14.1 --network 10.10.16.0/24

esxcli network ip route ipv4 remove -n 0.0.0.0/0 -g 10.10.14.1

esxcli network ip route ipv4 add --gateway 10.10.14.254 --network 0.0.0.0/0

esxcfg-route -l

NSX-T

基于 Ubuntu,但不可手动编辑,以下为 nsxcli (使用 admin 账号登录)

1
2
3
4
5
6
7
8
9
set route prefix 0.0.0.0/0 gateway 10.10.15.254 interface eth0

set route prefix 10.10.12.0/24 gateway 10.10.15.1 interface eth0
set route prefix 10.10.13.0/24 gateway 10.10.15.1 interface eth0
set route prefix 10.10.14.0/24 gateway 10.10.15.1 interface eth0
set route prefix 10.10.15.0/24 gateway 10.10.15.1 interface eth0
set route prefix 10.10.16.0/24 gateway 10.10.15.1 interface eth0

get route

VMware vRealize Network Insight

基于 Ubunt 16.04,与 Ubuntu 相同

使用 support 账号登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#添加
cat >> /etc/network/interfaces <<EOF
# static routes
up route add -net 10.10.12.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.13.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.14.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.15.0/24 gw 10.10.15.1 dev eth0
up route add -net 10.10.16.0/24 gw 10.10.15.1 dev eth0
EOF

#重启网络
service networking restart

#验证
ip route

VMware Photon OS

vCenter Server 6.x/7.0

用于 vRealize 8.x 系列产品(3.0),vSphere_Replication(2.0),SRM(2.0)

编辑 /etc/systemd/network/10-eth0.network

添加如下:

1
2
3
4
[Route]
Destination=10.1.0.0/16
Gateway=10.5.0.1
GatewayOnlink=true #可选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cat >> /etc/systemd/network/10-eth0.network <<EOF

[Route]
Destination=10.10.12.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.13.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.14.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.15.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.16.0/24
Gateway=10.10.15.1
GatewayOnlink=true
EOF

重启网络

1
systemctl restart systemd-networkd

验证

1
ip route

VMware Cloud Director Availability 4.0

注意:手动修改网络配置后,WebUI 中显示错误无法直接配置。

基于 Photon OS,但是网卡名称不一样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cat >> /etc/systemd/network/ens160.network <<EOF

[Route]
Destination=10.10.12.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.13.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.14.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.15.0/24
Gateway=10.10.15.1
GatewayOnlink=true

[Route]
Destination=10.10.16.0/24
Gateway=10.10.15.1
GatewayOnlink=true
EOF

重启网络

1
systemctl restart systemd-networkd

与[转帖]静态路由实例:如何在 macOS、FreeBSD、Linux、Windows、Cisco 和 VMware 上添加静态路由相似的内容:

[转帖]静态路由实例:如何在 macOS、FreeBSD、Linux、Windows、Cisco 和 VMware 上添加静态路由

https://sysin.org/blog/static-routing/ 学习一下呢. 本文描述主流系统和产品添加静态路由的方法,一些具备 WEB 管理界面的产品不在讨论范围,比如防火墙、路由器等多数产品具备直观的操作界面。 macOS 1、添加路由命令(临时) 与 Linux 类似,但是网关没

【转帖】BGP:全穿透,半穿透,静态代播有什么区别

一. 什么是BGP二. 具体实现方案 2.1BGP的优点 2.2 真伪BGP在使用效果上有什么差异​​​​​​​ ​​​​​​​ 2.2.1 真BGP实现了用户最佳路径的自动选择​​​​​​​​ ​​​​​​​ 2.2.2 伪BGP不具备真BGP动态最佳路径切换​​​​​​​​ ​​​​​​​ 2.

[转帖]Redhat、CentOS添加静态路由的方法

https://www.diewufeiyang.com/post/1174.html 我们经常遇到需要在系统默认路由的基础上,额外添加静态路由的需求。为了使得下次系统启动这些静态路由依旧生效,我们可能采取在rc.loal里加入route命令追加静态路由的方法。 现在给大家推荐Redhat建议的方法

[转帖]关于ubuntu:如何在-Ubuntu-Server-2204-上设置静态IP地址

https://lequ7.com/guan-yu-ubuntu-ru-he-zai-ubuntuserver2204-shang-she-zhi-jing-tai-ip-di-zhi.html 在这篇文章中,咱们将介绍如何在 Ubuntu Server 22.04 上设置动态 ip 地址。 强烈建

[转帖]使用ip命令配置静态ip及网关

一、使用ip命令配置静态IP地址 1.1.1停止网络接口 [rootakojihub~]# ip link set enp2s0 down 1.1.2配置静态IP地址 [root@kojihub~]# ip addr add 192.168.1.1/24 dev enp2s0 1.1.3激活网络接口

[转帖]Linux中关于库

库 1.库文件2.库的分类3.静态库和共享库的区别 1.库文件 库是一组预先编译好的方法的集合. /lib 根目录下的库文件 /usr/lib Linux系统存储库的位置一般存放在/lib 和/usr/lib(64位系统/usr/lib64) 库的头文件放在/usr/include 2.库的分类 静

[转帖]Nginx动静分离;资源分离;rewrite重写、跳转、伪静态、规则、日志

https://www.cnblogs.com/caodan01/p/14745562.html 一、动静分离 动静分离,通过中间件将动静请求和静态请求进行分离; 通过中间件将动态请求和静态请求分离,可以减少不必要的请求消耗,同时能减少请求的延时。 通过中间件将动态请求和静态请求分离,逻辑图如下:

[转帖]Linux之/etc/fstab文件讲解

https://www.cnblogs.com/FengGeBlog/p/10178824.html /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。当系统启

[转帖]Linux之fstab文件详解

https://blog.yelvlab.cn/archives/592/ fstab文件是干什么用的: /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。当系

[转帖]malloc()与 alloc()区别

https://www.cnblogs.com/longyi1234/archive/2010/03/22/malloc.html malloc()与 alloc() C语言跟内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量