Что такое маршрутизация
Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.
Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.
Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.
Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:
- Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
- Netmask (Genmask). Маска сети.
- Gateway. IP-адрес шлюза, через который можно добраться до цели.
- Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
- Metric. Числовой показатель, задающий предпочтительность маршрута.
Опционально в таблице также может содержаться следующая информация:
- адрес отправителя (source);
- размер TCP-окна (window);
- максимальная величина пакета (MSS) и типы записей.
My problem is quite similar to this question. My vagrant machine sets default route metric incorrectly.
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
match:
macaddress: 02:70:4e:c8:68:e9
enp0s8:
dhcp4: false
addresses: [192.168.33.10/24]
gateway4: 192.168.33.1
routes:
- to: 192.168.33.0/24
via: 192.168.33.1
metric: 0
And route table.
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.33.1 0.0.0.0 UG 0 0 0 enp0s8
0.0.0.0 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
10.0.2.2 0.0.0.0 255.255.255.255 UH 100 0 0 enp0s3
192.168.33.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
192.168.33.0 192.168.33.1 255.255.255.0 UG 0 0 0 enp0s8
enp0s3
is NAT interface and internet connection should use this. sudo route del default enp0s8
resolves this problem, but adding routes to yaml couldn’t solve the problem and has the limit of fixed gateway.
What configuration should I use to reorder metrics automatically?
asked Feb 22, 2018 at 3:56
For systems with multiple interfaces, only the interface that should get the default gateway should have “gateway4:” set; keeping in mind that DHCP is quite likely to set the default gateway as well:
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
match:
macaddress: 02:70:4e:c8:68:e9
enp0s8:
dhcp4: false
addresses: [192.168.33.10/24]
Note that the additional route you had set is typically unneeded: 192.168.33.0/24 is already reachable, as it is directly connected to the enp0s8
interface in this case (when addresses:
lists the subnet already). Having a metric:
set to 0 can further confuse the kernel.
If you need the interface with static IP (in this case enp0s8
to have the default gateway instead of the interface that does DHCP, then you can set a route with a metric value lower than 100; so that it is picked before the default gateway set via DHCP by systemd-networkd. For example:
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
match:
macaddress: 02:70:4e:c8:68:e9
enp0s8:
dhcp4: false
addresses: [192.168.33.10/24]
routes:
- to: 0.0.0.0/0
via: 192.168.33.1
metric: 50
answered Mar 14, 2018 at 2:51
Сегодня речь пойдёт о настройке сетевых маршрутов в Windows командой ROUTE. Маршрутизация в сети нужна для того, чтобы устройства могли найти друг друга. Работает это так: мы задаём адрес назначения (destination) и шлюз (gateway), через который пакетам нужно пройти, чтобы достичь адреса назначения.
Команда в Windows это весьма удобный инструмент для просмотра, добавления, редактирования и удаления сетевых маршрутов. Синтаксис команды выглядит следующим образом:
-f — очистка таблиц маршрутов от записей всех шлюзов. При указании одной из команд таблицы очищаются до выполнения команды;
-p — при использовании с командой ADD задаёт сохранение маршрута при перезагрузке системы. По умолчанию маршруты при перезагрузке не сохраняются. В Windows 95 не поддерживается;
-4 — обязательное использование протокола IPv4;
-6 — обязательное использование протокола IPv6;
command — одна из следующих команд:
- PRINT — печать маршрута;
- ADD — добавление маршрута;
- CHANGE — редактирование маршрута;
- DELETE — удаление маршрута;
destination — адресуемый узел;
MASK — указывает, что следующий параметр интерпретируется как маска подсети;
netmask — значение маски подсети для данного маршрута. Если параметр не задан, то используется значение по умолчанию — 255.255.255.255;
gateway — шлюз;
METRIC — указывает, что следующий параметр интерпретируется как метрика. Предназначение метрики — оптимизировать доставку пакета, если конечная точка доступна по нескольким маршрутам. Метрика представляет собой число. Чем меньше значение метрики, тем выше приоритет узла при построении маршрута;
metric — значение метрики;
IF — указание, что следующий параметр интерпретируется как сетевой интерфейс;
interface — номер интерфейса для указанного маршрута.
Рассмотрим применений команды .
Отобразить текущую таблицу маршрутов:
Отобразить таблицу маршрутов только для IPv6:
route print -6
Отобразить таблицу маршрутов только для узлов, адрес которых начинается с 10:
route print 10*
Немного о том, как читать вывод команды .
Список интерфейсов показывает идентификаторы, MAC-адреса и наименования сетевых адаптеров.
Далее идут таблицы маршрутов. Они содержат столбцы сетевой адрес, маска сети, адрес шлюза, интерфейс и метрика.
Сетевой адрес это и есть адрес конечной точки маршрута (адрес назначения). С назначением столбца маска сети всё должно быть понятно по названию. Адрес шлюза относится к тому шлюзу, через который пойдёт пакет, чтобы достигнуть адреса назначения. Если написано On-link, то значит, что шлюз не используется по той причине, что адрес назначения достижим напрямую без маршрутизации. Интерфейс — адрес сетевого интерфейса, через который будет выполняться отправка пакета. Метрика — значение метрики, которая задаёт приоритет маршрутов. Чем меньше значение, тем выше приоритет.
Теперь рассмотрим управление маршрутами при помощи .
Установить в качестве шлюза по умолчанию (основного шлюза) адрес 192.168.1.1:
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
Добавить маршрут для узла 10.10.10.10:
route add 10.10.10.10 192.168.1.15
Так как маска не указана, то подразумевается значение 255.255.255.255.
То же самое, но добавление в качестве постоянного маршрута, который сохранится после перезагрузки:
route -p add 10.10.10.10 192.168.1.15
Такой маршрут будет записан в реестр Windows (ветка HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes).
Удалить маршрут для узла 10.10.10.10:
route delete 10.10.10.10
Изменить адрес шлюза для узла 10.20.20.20:
route change 10.20.20.20 192.168.1.10
можно использовать для изменения только шлюза и метрики.
Очистить таблицу маршрутов:
При очистке таблицы маршрутов удаляются все маршруты, которые удовлетворяют следующим условиям:
- Не относятся к петлевому интерфейсу (интерфейсу с IP 127.0.0.1 и маской -255.0.0.0);
- Не являются маршрутами для многоадресной (multicast) рассылки (IP 224.0.0.1, маска 255.0.0.0);
- Не являются узловыми маршрутами (когда маска равна 255.255.255.255).
При обработке таблицы маршрутов, статические маршруты имеют более высокий приоритет по сравнению с маршрутами, используемыми по умолчанию.
<!– Put this script tag to the of your page –>
Provided by: net-tools_1.60-26ubuntu1_amd64
NAME
route - show / manipulate the IP routing table
SYNOPSIS
route [-CFvnee] route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If] route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If] route [-V] [--version] [-h] [--help]
DESCRIPTION
Route manipulates the kernel's IP routing tables. Its primary use is to set up static
routes to specific hosts or networks via an interface after it has been configured with
the ifconfig(8) program.
When the add or del options are used, route modifies the routing tables. Without these
options, route displays the current contents of the routing tables.
OPTIONS
-A family
use the specified address family (eg `inet'; use `route --help' for a full list).
-F operate on the kernel's FIB (Forwarding Information Base) routing table. This is
the default.
-C operate on the kernel's routing cache.
-v select verbose operation.
-n show numerical addresses instead of trying to determine symbolic host names. This
is useful if you are trying to determine why the route to your nameserver has
vanished.
-e use netstat(8)-format for displaying the routing table. -ee will generate a very
long line with all parameters from the routing table.
del delete a route.
add add a new route.
target the destination network or host. You can provide IP addresses in dotted decimal or
host/network names.
-net the target is a network.
-host the target is a host.
netmask NM
when adding a network route, the netmask to be used.
gw GW route packets via a gateway. NOTE: The specified gateway must be reachable first.
This usually means that you have to set up a static route to the gateway
beforehand. If you specify the address of one of your local interfaces, it will be
used to decide about the interface to which the packets should be routed to. This
is a BSDism compatibility hack.
metric M
set the metric field in the routing table (used by routing daemons) to M.
mss M set the TCP Maximum Segment Size (MSS) for connections over this route to M bytes.
The default is the device MTU minus headers, or a lower MTU when path mtu discovery
occurred. This setting can be used to force smaller TCP packets on the other end
when path mtu discovery does not work (usually because of misconfigured firewalls
that block ICMP Fragmentation Needed)
window W
set the TCP window size for connections over this route to W bytes. This is
typically only used on AX.25 networks and with drivers unable to handle back to
back frames.
irtt I set the initial round trip time (irtt) for TCP connections over this route to I
milliseconds (1-12000). This is typically only used on AX.25 networks. If omitted
the RFC 1122 default of 300ms is used.
reject install a blocking route, which will force a route lookup to fail. This is for
example used to mask out networks before using the default route. This is NOT for
firewalling.
mod, dyn, reinstate
install a dynamic or modified route. These flags are for diagnostic purposes, and
are generally only set by routing daemons.
dev If force the route to be associated with the specified device, as the kernel will
otherwise try to determine the device on its own (by checking already existing
routes and device specifications, and where the route is added to). In most normal
networks you won't need this.
If dev If is the last option on the command line, the word dev may be omitted, as
it's the default. Otherwise the order of the route modifiers (metric - netmask - gw
- dev) doesn't matter.
EXAMPLES
route add -net 127.0.0.0 netmask 255.0.0.0 dev lo
adds the normal loopback entry, using netmask 255.0.0.0 and associated with the
"lo" device (assuming this device was previously set up correctly with
ifconfig(8)).
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
adds a route to the local network 192.56.76.x via "eth0". The word "dev" can be
omitted here.
route del default
deletes the current default route, which is labeled "default" or 0.0.0.0 in the
destination field of the current routing table.
route add default gw mango-gw
adds a default route (which will be used if no other route matches). All packets
using this route will be gatewayed through "mango-gw". The device which will
actually be used for that route depends on how we can reach "mango-gw" - the static
route to "mango-gw" will have to be set up before.
route add ipx4 sl0
Adds the route to the "ipx4" host via the SLIP interface (assuming that "ipx4" is
the SLIP host).
route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
This command adds the net "192.57.66.x" to be gatewayed through the former route to
the SLIP interface.
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
This is an obscure one documented so people know how to do it. This sets all of the
class D (multicast) IP routes to go via "eth0". This is the correct normal
configuration line with a multicasting kernel.
route add -net 10.0.0.0 netmask 255.0.0.0 reject
This installs a rejecting route for the private network "10.x.x.x."
OUTPUT
The output of the kernel routing table is organized in the following columns Destination The destination network or destination host. Gateway The gateway address or '*' if none set. Genmask The netmask for the destination net; '255.255.255.255' for a host destination and '0.0.0.0' for the default route. Flags Possible flags include U (route is up) H (target is a host) G (use gateway) R (reinstate route for dynamic routing) D (dynamically installed by daemon or redirect) M (modified from routing daemon or redirect) A (installed by addrconf) C (cache entry) ! (reject route) Metric The 'distance' to the target (usually counted in hops). It is not used by recent kernels, but may be needed by routing daemons. Ref Number of references to this route. (Not used in the Linux kernel.) Use Count of lookups for the route. Depending on the use of -F and -C this will be either route cache misses (-F) or hits (-C). Iface Interface to which packets for this route will be sent. MSS Default maximum segment size for TCP connections over this route. Window Default window size for TCP connections over this route. irtt Initial RTT (Round Trip Time). The kernel uses this to guess about the best TCP protocol parameters without waiting on (possibly slow) answers. HH (cached only) The number of ARP entries and cached routes that refer to the hardware header cache for the cached route. This will be -1 if a hardware address is not needed for the interface of the cached route (e.g. lo). Arp (cached only) Whether or not the hardware address for the cached route is up to date.
FILES
/proc/net/ipv6_route /proc/net/route /proc/net/rt_cache
SEE ALSO
ifconfig(8), netstat(8), arp(8), rarp(8)
HISTORY
Route for Linux was originally written by Fred N. van Kempen,
<waltje@uwalt.nl.mugnet.org> and then modified by Johannes Stille and Linus Torvalds for
pl15. Alan Cox added the mss and window options for Linux 1.1.22. irtt support and merged
with netstat from Bernd Eckenfels.
AUTHOR
Currently maintained by Phil Blundell <Philip.Blundell@pobox.com> and Bernd Eckenfels <net-tools@lina.inka.de>.
Как посмотреть таблицу маршрутизации
Таблицу маршрутизации в Linux (например, в популярных серверных ОС типа Ubuntu или CentOS) можно посмотреть с помощью нескольких команд.
Команда route
Программа используется для настройки параметров статической маршрутизации. Просмотр таблицы можно осуществить с помощью команды:
route -n
Команда netstat
Утилита используется для сбора информации о состоянии сетевых соединений. Вывести таблицу можно с помощью команды:
netstat -r
Примеры статической маршрутизации
Составление нового маршрута
Можно представить два офиса: A и B. В каждом стоят маршрутизаторы на Linux, которые соединены между собой IP-IP туннелем.
Чтобы подключение к локальной сеть маршрутизатора A стало возможным из локальной сети маршрутизатора B и наоборот, нужно прописать на маршрутизаторе B:
route add -net 172.16.10.0/24 gw 192.168.1.1
Будет произведена установка шлюза «192.168.1.1» для сети «172.16.10.0/24».
Также необходимо прописать на маршрутизаторе A обратный маршрут в локальную сеть маршрутизатора B:
route add -net 172.20.0.0/24 gw 192.168.1.2
Изменение локальной сети
В случае изменения локальной сети маршрутизатора B, необходимо удалить старую запись:
route del -net 172.20.0.0/24 gw 192.168.1.2
А после добавить новый маршрут на маршрутизаторе А:
route add -net 172.20.0.0/24 gw 192.168.1.2
Изменение адреса тоннеля
ip route replace 172.16.10.0/24 via 192.168.1.3
После выполнения команды адрес шлюза для подсети «172.16.10.0/24» будет изменён.
Изменение провайдера
Чтобы перенаправить трафик через другого провайдера («ISP2»), следует изменить маршрут «по умолчанию» («default»):
ip route replace default via 5.215.98.7
Построение таблицы маршрутизации
Существует несколько основных утилит для настройки таблицы маршрутизации (добавления, обновления, удаления старых и новых маршрутов):
- Route. Устаревшая утилита, входящая в состав пакета net-tools. Служит для отображения таблицы маршрутизации и построения статических маршрутов.
- IP Route. Обновленный инструмент, призванный заменить Route. Имеет большую функциональность, по сравнению со своим предшественником.
Оба инструмента могут использоваться для выполнения аналогичных задач. Далее будет рассмотрен синтаксис каждого в пределе основных возможностей.
Команда имеет следующий вид:
route [-f] [-p] command -net [destination] netmask [MASK netmask] gw [gateway] metric [METRIC metric] dev [IF interface]
Ключи
- -f – очистка таблиц от записей всех шлюзов.
- -p – сохранение маршрута в качестве постоянного при использовании ADD. По умолчанию все маршруты временные и после перезагрузки системы сбрасываются.
Основные опции (command)
- add – добавление маршрута.
- del – удаление маршрута.
- replace – замена маршрута.
- change – изменение или настройка параметров маршрута.
Обозначения
- [destination] – адрес сети назначения.
- [MASK netmask] – маска подсети.
- [gateway] – адрес шлюза.
- [METRIC metric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
- [IF interface] – сетевой интерфейс.
Опции для указания вводных данных
- -net – целевая сеть.
- -host – целевой хост.
- gw – шлюз (Gateway).
- dev – сетевой интерфейс.
- netmask – маска подсети.
- metric – метрика.
IP Route
Команда имеет следующий вид:
ip route command [destination] netmask [MASK netmask] via [gateway] metric [METRIC metric] dev [IF interface]
Основные опции (command)
- add – добавление маршрута.
- del – удаление маршрута.
- replace – замена маршрута.
- change – изменение или настройка параметров маршрута.
Обозначения
- [destination] – адрес сети назначения.
- [MASK netmask] – маска подсети.
- [gateway] – адрес шлюза.
- [METRIC metric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
- [IF interface] – сетевой интерфейс.
Опции для указания вводных данных
- via – используется в значении «через» для указания шлюза.
- dev – сетевой интерфейс.
- netmask – маска подсети.
- metric – метрика.
Basic IP Routing
This module describes how to configure basic IP routing. The Internet Protocol (IP) is a network layer (Layer 3) protocol
that contains addressing information and some control information that enables packets to be routed. IP is documented in RFC
791 and is the primary network layer protocol in the Internet protocol suite.
Finding Feature Information
Your software release may not support all the features documented in this module. For the latest caveats and feature information,
see Bug Search Tool and the release notes for your platform and software release. To find information about the features documented in this module,
and to see a list of the releases in which each feature is supported, see the feature information table.
Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature
Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Additional References
Related Documents
Technical Assistance
Feature Information for Basic
IP Routing
Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco
Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.