- 10+ ip route command examples in Linux [Cheat Sheet]
- Types of route
- Syntax for ip route command
- Different examples to use ip route command
- 1. List current routing table using ip route command
- 2. Add a new route using ip route command
- 3. Add a new default gateway route using ip route command
- 4. Add a new route to specific device with ip route command
- 5. Delete a route using ip route command
- 6. Modify an existing route using ip route command
- 7. Clear routes with flush using ip route command
- 8. Clear all the routes using ip route command
- 9. Get a single route to a destination
- 10. Get a single route from the source
- 11. List routes with given scope only
- 12. List routes for specified device only
- Conclusion
- What’s Next
- Further Reading
- Настройка сетевых маршрутов в Linux (CentOS)
- Просмотр таблицы маршрутизации в Linux
- Как добавить или удалить статический маршрут?
- Изменить маршрут в Linux
- Изменить маршрут по умолчанию
10+ ip route command examples in Linux [Cheat Sheet]
In Linux, ip command is used to show or manipulate routing, devices, policy routing and tunnels. ip route is a part of ip command. It helps to manage the route entries in the kernel routing tables that keep information about paths to other networked nodes. The routes can be set for different IP addresses (destination). You can use ip route command to add, delete, change, and list the routes.
Types of route
Following are the different types of routes.
- unicast: It describes real paths to the destinations covered by the route prefix.
- unreachable: Unreachable destinations. The packets are discarded and the ICMP message host unreachable is generated.
- blackhole: Unreachable destinations. The packets are discarded silently.
- prohibi: Unreachable destinations. The packets are discarded and the ICMP message communication administratively prohibited is generated.
- local: The destinations are assigned to this host.
- broadcast: The destinations are broadcast addresses. The packets are sent as link broadcasts.
- throw: The packets are dropped and the ICMP message net unreachable is generated.
- nat: A special nat route. The destinations covered by the prefix are considered dummy (or external) addresses and require translation to real (or internal) ones before forwarding.
- anycast: The destinations are anycast addresses assigned to this host. They are not implemented.
- multicast: A special type for multicast routing. It is not present in normal routing tables.
Syntax for ip route command
The syntax for ip route command is:
Some important commands in ip route are:
Different examples to use ip route command
1. List current routing table using ip route command
You can use ip route list or ip route show command to list current routes or routing table.
Sample Output:
2. Add a new route using ip route command
The ip route add command is used to add a new route for the specified network range. You will need root privileges to execute the command.
Sample Output:
You can also use ip route only to list the routing table.
3. Add a new default gateway route using ip route command
A default gateway is the IP address of the router that connects your host to remote networks. You can use the following command to add a new default gateway route.
$ sudo ip route add default via
Sample Output:
4. Add a new route to specific device with ip route command
The below command adds a new route specifying the network interface or network device as the gateway.
Sample Output:
5. Delete a route using ip route command
You can use the ip route delete command to delete a route from the routing table.
Sample Output:
6. Modify an existing route using ip route command
You can change a route using the ip route change command.
Sample Output:
For example, to change the default gateway route, you can use the below command.
7. Clear routes with flush using ip route command
The ip route flush command clears a route from the routing table for a particular destination.
Sample Output:
8. Clear all the routes using ip route command
You can also use ip route flush command to remove all the routes from the routing table.
$ sudo ip route flush table main
Sample Output:
9. Get a single route to a destination
The below command is used to get a single route to a destination address and prints its contents.
$ ip route get to destination
Sample Output:
deepak@ubuntu:~$ ip route get to 192.168.0.133 192.168.0.133 dev enp0s3 src 192.168.0.103 uid 1000 cache
10. Get a single route from the source
You can run the following command to get a single route from the source address.
$ ip route get destination from source
Sample Output:
deepak@ubuntu:~$ ip route get to 192.168.0.133 from 192.168.0.103 192.168.0.133 from 192.168.0.103 dev enp0s3 uid 1000 cache
11. List routes with given scope only
You can run the below command to list routes with the given scope only.
$ ip route list scope scope_value
Sample Output:
12. List routes for specified device only
The following command lists the routes with the specified device only.
Sample Output:
To view the routes with device name enp0s3, you can use:
Conclusion
In this tutorial, we have learned how we can manage the routing table using the ip route command in the Linux system. You can add, delete, change, and list the routes in the routing table. If you still have any confusion, feel free to ask us in the comment section.
What’s Next
Further Reading
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
Настройка сетевых маршрутов в Linux (CentOS)
13.04.2020
VyacheslavK
CentOS, Linux
Один комментарий
В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).
Для управления маршрутизацией в Linux предпочтительно исопльзовать утилиту ip , а не route . Команда route не позволяет настраивать расширенные возможности маршрутизации (например, политики маршрутизации), и не покажет специальные настройки маршрутизации, если они уже сделаны через ip.
Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:
- default via 192.168.1.1 dev enp0s3 – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
- 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 — статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе
- proto kernel – маршрут создан ядром ( proto static – маршрут добавлен администратором)
- metric – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.
Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.
Как добавить или удалить статический маршрут?
Чтобы добавить новый маршрут к определенной IP подсети в таблицу маршрутизации Linux, нужно выполнить следующую команду:
# ip route add 192.168.0.0/24 via 192.168.1.1
Таким образом, мы добавим маршрут для IP сети 192.168.0.0/24 через шлюз 192.168.1.1.
Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо ip route add можно написать ip pro ad .
Также можно добавить отдельный маршрут для одного IP адреса (хоста):
# ip route add 192.168.1.0 via 192.168.1.1
Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:
# ip route add blackhole 10.1.20.0/24
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
В моем случае, интерфейс enp0s3.
Далее открываем следующий файл:
И добавляем туда строку с маршрутом:
После добавления маршрута в файл нужно перезапустить сервис network:
После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:
И укажите команду добавления маршрута:
# ip route add 192.168.0.0/24 via 192.168.1.1
Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.
Изменить маршрут в Linux
Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1
Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
Restarting network (via systemctl): [ OK ]
default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
Изменить маршрут по умолчанию
Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:
# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)
# ip route add default via enp0s3 (маршрут через имя устройства)
Чтобы изменить параметры маршрута по умолчанию, используется команда:
# ip route replace default via 192.168.1.2
Предыдущая статья Следующая статья