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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
.. _routing-static:
######
Static
######
Static routes are manually configured routes, which, in general, cannot be
updated dynamically from information VyOS learns about the network topology from
other routing protocols. However, if a link fails, the router will remove
routes, including static routes, from the :abbr:`RIPB (Routing Information
Base)` that used this interface to reach the next hop. In general, static
routes should only be used for very simple network topologies, or to override
the behavior of a dynamic routing protocol for a small number of routes. The
collection of all routes the router has learned from its configuration or from
its dynamic routing protocols is stored in the RIB. Unicast routes are directly
used to determine the forwarding table used for unicast packet forwarding.
*************
Static Routes
*************
.. cfgcmd:: set protocols static route <subnet> next-hop <address>
Configure next-hop `<address>` for an IPv4 static route. Multiple static
routes can be created.
.. cfgcmd:: set protocols static route <subnet> next-hop <address> disable
Disable this IPv4 static route entry.
.. cfgcmd:: set protocols static route <subnet> next-hop <address>
distance <distance>
Defines next-hop distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
Range is 1 to 255, default is 1.
.. note:: Routes with a distance of 255 are effectively disabled and not
installed into the kernel.
.. cfgcmd:: set protocols static route6 <subnet> next-hop <address>
Configure next-hop `<address>` for an IPv6 static route. Multiple static
routes can be created.
.. cfgcmd:: set protocols static route6 <subnet> next-hop <address> disable
Disable this IPv6 static route entry.
.. cfgcmd:: set protocols static route6 <subnet> next-hop <address>
distance <distance>
Defines next-hop distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
Range is 1 to 255, default is 1.
.. note:: Routes with a distance of 255 are effectively disabled and not
installed into the kernel.
.. cfgcmd:: set protocols static route6 <subnet> next-hop <address> segments <segments>
It is possible to specify a static route for ipv6 prefixes using an SRv6 segments
instruction. The `/` separator can be used to specify multiple segment instructions.
Example:
.. code-block:: none
set protocols static route6 2001:db8:1000::/36 next-hop 2001:db8:201::ffff segments '2001:db8:aaaa::7/2002::4/2002::3/2002::2'
.. code-block:: none
vyos@vyos:~$ show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
v - VNC, V - VNC-Direct, A - Babel, F - PBR,
f - OpenFabric,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
C>* 2001:db8:201::/64 is directly connected, eth0.201, 00:00:46
S>* 2001:db8:1000::/36 [1/0] via 2001:db8:201::ffff, eth0.201, seg6 2001:db8:aaaa::7,2002::4,2002::3,2002::2, weight 1, 00:00:08
Interface Routes
================
.. cfgcmd:: set protocols static route <subnet> interface
<interface>
Allows you to configure the next-hop interface for an interface-based IPv4
static route. `<interface>` will be the next-hop interface where traffic is
routed for the given `<subnet>`.
.. cfgcmd:: set protocols static route <subnet> interface
<interface> disable
Disables interface-based IPv4 static route.
.. cfgcmd:: set protocols static route <subnet> interface
<interface> distance <distance>
Defines next-hop distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
Range is 1 to 255, default is 1.
.. cfgcmd:: set protocols static route6 <subnet> interface
<interface>
Allows you to configure the next-hop interface for an interface-based IPv6
static route. `<interface>` will be the next-hop interface where traffic is
routed for the given `<subnet>`.
.. cfgcmd:: set protocols static route6 <subnet> interface
<interface> disable
Disables interface-based IPv6 static route.
.. cfgcmd:: set protocols static route6 <subnet> interface
<interface> distance <distance>
Defines next-hop distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
Range is 1 to 255, default is 1.
.. cfgcmd:: set protocols static route6 <subnet> interface
<interface> segments <segments>
It is possible to specify a static route for ipv6 prefixes using an SRv6 segments
instruction. The `/` separator can be used to specify multiple segment instructions.
Example:
.. code-block:: none
set protocols static route6 2001:db8:1000::/36 interface eth0 segments '2001:db8:aaaa::7/2002::4/2002::3/2002::2'
DHCP Interface Routes
=====================
.. cfgcmd:: set protocols static route <subnet> dhcp-interface <interface>
Defines route with DHCP interface supplying next-hop IP address.
Reject Routes
=============
.. cfgcmd:: set protocol static route <subnet> reject
Defines route which emits an ICMP unreachable when matched.
.. cfgcmd:: set protocols static route <subnet> reject distance <distance>
Defines distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
.. cfgcmd:: set protocols static route <subnet> reject tag <tag>
Sets a tag for this route.
.. cfgcmd:: set protocol static route6 <subnet> reject
Defines route which emits an ICMP unreachable when matched.
.. cfgcmd:: set protocols static route6 <subnet> reject distance <distance>
Defines distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
.. cfgcmd:: set protocols static route6 <subnet> reject tag <tag>
Sets a tag for this route.
Blackhole Routes
================
.. cfgcmd:: set protocols static route <subnet> blackhole
Use this command to configure a "black-hole" route on the router. A
black-hole route is a route for which the system silently discard packets
that are matched. This prevents networks leaking out public interfaces, but
it does not prevent them from being used as a more specific route inside your
network.
.. cfgcmd:: set protocols static route <subnet> blackhole distance <distance>
Defines blackhole distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
.. cfgcmd:: set protocols static route <subnet> blackhole tag <tag>
Sets a tag for this route.
.. cfgcmd:: set protocols static route6 <subnet> blackhole
Use this command to configure a "black-hole" route on the router. A
black-hole route is a route for which the system silently discard packets
that are matched. This prevents networks leaking out public interfaces, but
it does not prevent them from being used as a more specific route inside your
network.
.. cfgcmd:: set protocols static route6 <subnet> blackhole distance <distance>
Defines blackhole distance for this route, routes with smaller administrative
distance are elected prior to those with a higher distance.
.. cfgcmd:: set protocols static route6 <subnet> blackhole tag <tag>
Sets a tag for this route.
Alternate Routing Tables
========================
TBD
Alternate routing tables are used with policy based routing by utilizing
:ref:`vrf`.
.. _routing-arp:
###
ARP
###
:abbr:`ARP (Address Resolution Protocol)` is a communication protocol used for
discovering the link layer address, such as a MAC address, associated with a
given internet layer address, typically an IPv4 address. This mapping is a
critical function in the Internet protocol suite. ARP was defined in 1982 by
:rfc:`826` which is Internet Standard STD 37.
In Internet Protocol Version 6 (IPv6) networks, the functionality of ARP is
provided by the Neighbor Discovery Protocol (NDP).
To manipulate or display ARP_ table entries, the following commands are
implemented.
*********
Configure
*********
.. cfgcmd:: set protocols static arp interface <interface> address <host>
mac <mac>
This will configure a static ARP entry always resolving `<address>` to
`<mac>` for interface `<interface>`.
Example:
.. code-block:: none
set protocols static arp interface eth0 address 192.0.2.1 mac 01:23:45:67:89:01
*********
Operation
*********
.. opcmd:: show protocols static arp
Display all known ARP table entries spanning across all interfaces
.. code-block:: none
vyos@vyos:~$ show protocols static arp
Address HWtype HWaddress Flags Mask Iface
10.1.1.1 ether 00:53:00:de:23:2e C eth1
10.1.1.100 ether 00:53:00:de:23:aa CM eth1
.. opcmd:: show protocols static arp interface eth1
Display all known ARP table entries on a given interface only (`eth1`):
.. code-block:: none
vyos@vyos:~$ show protocols static arp interface eth1
Address HWtype HWaddress Flags Mask Iface
10.1.1.1 ether 00:53:00:de:23:2e C eth1
10.1.1.100 ether 00:53:00:de:23:aa CM eth1
.. _ARP: https://en.wikipedia.org/wiki/Address_Resolution_Protocol
|