- Как добавить статические маршруты (routes) в Ubuntu
- Добаление маршрута в linux (static routes)
- Как сохранить статический маршрут
- Как посмотреть маршруты в системе
- Сохранить статический маршрут в CentOS (Redhat)
- Настройка сетевых маршрутов в Linux (CentOS)
- Просмотр таблицы маршрутизации в Linux
- Как добавить или удалить статический маршрут?
- Изменить маршрут в Linux
- Изменить маршрут по умолчанию
- Как прописать маршруты
- Пример для Windows
- Пример для Ubuntu/Debian
- Сохранение маршрута при перезагрузке сервера
- Пример для CentOS/Fedora/RHEL
- Сохранение маршрута при перезагрузке сервера
- Настройка маршрутизации в Linux
- Дополнение 1.
- Дополнение 2.
- Дополнение 3.
Как добавить статические маршруты (routes) в Ubuntu
Written by on 28.09.2015 . Posted in Linux
Добаление маршрута в linux (static routes)
В память можно добавить маршрут используя route или через ip ro
синтаксис route
route add [-net|-host] netmask gw dev X
синтаксис ip ro
ip route add via
Все параметры можно посмотреть ip route help
примечание: в команде ip можно использовать сокращенный синтаксис ip ro … в место ip route …
Для удаления статического маршрута используйте del вместо add
Как сохранить статический маршрут
Все эти маршруты будут добавлены в память и сохранятся до перезагрузки. Если необходимо, загружать маршруты при загрузки системы, то необходимо добавить их в файл конфигурации интерфейсов (для ubuntu и debian). /etc/network/interfaces
Добавим в конец файла следующую сточку:
up ip ro add 192.168.2.0/24 via 192.168.0.1
пример файла конфигурации.
Как посмотреть маршруты в системе
Сохранить статический маршрут в CentOS (Redhat)
- Необходимо отредактировать (если нет создать) файл
/etc/sysconfig/network-scripts/route-ethX — ethX заменить на номер интерфейса (eth0, eth1 …)
добавить следующие строки:
X.X.X.X — заменить на нужные значения
Другой вариант добавить маршруты в файл /etc/sysconfig/static-routes. Если нет этого файла — необходимо создать.
Пример содержания фала:
PS: Если маршрутов много или ими нужно управлять (добавлять или удалять) то лучше для этого использовать демон статической маршрутизации
Вам помогла эта статья, не забудьте сказать «спасибо» для благодарности используется вертикальная и горизонтальная реклама на сайте.
Источник
Настройка сетевых маршрутов в Linux (CentOS)
В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).
Просмотр таблицы маршрутизации в 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 адресу используется команда:
# ip route get 192.168.2.45
Как добавить или удалить статический маршрут?
Чтобы добавить новый маршрут к определенной 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 адреса (хоста):
# 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
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
# ip route del 192.168.0.0/24
Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
В моем случае, интерфейс enp0s3.
Далее открываем следующий файл:
И добавляем туда строку с маршрутом:
После добавления маршрута в файл нужно перезапустить сервис network:
# service network restart
После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл 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
Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
]# service network restart
Изменить маршрут по умолчанию
Вы можете удалить маршрут по-умолчаню с помощью команды 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-адреса.
- Из сегмента 1 требуется маршрут в сеть b.b.b.b через GW (a.a.a.254).
- Из сегмента 2 требуется маршрут в сеть a.a.a.a через GW (b.b.b.254).
Пример для Windows
Чтобы прописать маршруты на сервере (выделенном сервере, виртуальной машине, облачном сервере), введите команду в консоли:
- route — программа работы с маршрутами;
- ADD – команда для добавления маршрута;
- -p – этот ключ нужен, чтобы сохранить маршрут;
- MASK – маски сети;
- METRIC 1 – параметр, определяющий приоритет указанного выше шлюза, 1 — наивысший приоритет.
Проверить прописанные маршруты можно командой route print .
Пример для Ubuntu/Debian
Чтобы прописать маршруты в ОС Ubuntu, проверьте существующие маршруты командой route или netstat -nr :
В данном случае система чистая и дополнительных маршрутов, кроме дефолтного шлюза, нет.
Добавьте статический маршрут в подсеть 192.168.2.0 с 24 маской (255.255.255.0), в роли шлюза укажите, например, 192.168.0.100. Команда будет выглядеть следующим образом:
Проверьте существующие маршруты:
Начиная с версии Ubuntu 17.10 Netplan используется по умолчанию как утилита для конфигурирования сетевых настроек.
В предыдущих версиях Ubuntu использовалась утилита ifconfig и конфигурационный файл /etc/network/interfaces .
В нашем случае все образы OS Linux используют систему Cloud-init для инициализации системы при первом запуске. В ОС Ubuntu утилита Netplan установлена, но не используется.
Обратите внимание! Если произойдет перезагрузка сервера, то маршрут пропадет, как и с семейством RHEL.
Сохранение маршрута при перезагрузке сервера
Чтобы при перезагрузке сервера маршрут не пропал, нужно для соответствующего сетевого интерфейса, в нашем случае это eth0 , пропишите нужный маршрут в файле конфигурации /etc/network/interfaces.d/50-cloud-init.cfg :
Отключите возможность настройки сети через Cloud-init и создайте файл:
Добавьте в созданный файл необходимые параметры конфигурации Cloud-init, отключающие конфигурирование сети:
Добавьте в файл конфигурации маршрут up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.100 :
Для Ubuntu 18 используйте команду:
Проверьте существующие маршруты:
Маршрут успешно прописался и не пропадет, если перезагрузить сервис.
Пример для CentOS/Fedora/RHEL
Проверьте существующие маршруты командой route или netstat -nr :
В данном случае система чистая и дополнительных маршрутов, кроме дефолтного шлюза, нет.
Добавьте статический маршрут в подсеть 192.168.2.0 с 24 маской (255.255.255.0), в роли шлюза укажите, например, 192.168.0.100. Команда будет выглядеть следующим образом:
Проверьте добавленные маршруты:
Маршрут успешно добавлен.
Обратите внимание! Если произойдет перезагрузка системы, то добавленный маршрут будет удален.
Сохранение маршрута при перезагрузке сервера
Чтобы при перезагрузке системы маршрут не был удален, в каталоге /etc/sysconfig/network-scripts создайте файл с именем route-eth0 (соответствует нужному интерфейсу eth0):
Отключите возможность настройки сети через Cloud-init и создайте файл:
Добавьте в созданный файл необходимые параметры конфигурации Cloud-init, отключающие конфигурирование сети:
Удалите текущий файл настроек:
Создайте новый файл:
Добавьте новый нужный маршрут:
Перезапустите сетевые службы, чтобы изменения вступили в силу:
Источник
Настройка маршрутизации в Linux
Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д. Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация. Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.254.1 0.0.0.0 UG 0 0 0 eth1
Если таблица пуста, то вы увидите только заголовки столбцов. Тогда надо использовать route. С помощью команды route можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:
route -f операция -тип адресат шлюз интерфейс
Здесь аргумент операция может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат может быть IP-адресом машины, IP-адресом сети или ключевым словом default . Аргумент шлюз — это IP-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером). Команда
route -f
удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения net или host. В первом случае в поле адресата указывается адрес сети, а во втором — адрес конкретного компьютера
(хоста).
Как правило, бывает необходимо настроить маршрутизацию по упоминавшимся выше трем интерфейсам:
* локальный интерфейс (lo),
* интерфейс для платы Ethetnet (eth0),
* интерфейс для последовательного порта (PPP или SLIP).
Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127. используется команда:
route add -net 127.0.0.1 lo
Если у вас для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки маршрутизации достаточно вызвать:
route add -net 192.168.36.0 netmask 255.255.255.0 eth0
Если же вы имеете насколько интерфейсов, то вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса. Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться не в одну единственную сеть, а в разные сети (например, при просмотре разных сайтов в Интернете), то в принципе надо было бы задать очень много маршрутов. Очевидно, что сделать это было бы очень сложно, точнее просто невозможно. Поэтому решение проблемы маршрутизации пакетов перекладывают на плечи специальных компьютеров — маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. С помощью маршрута по умолчанию вы говорите ядру «а все остальное отправляй туда». Маршрут по умолчанию настраивается следующей командой:
route add default gw 192.168.1.1 eth0
Опция gw указывает программе route, что следующий аргумент — это IP-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации. Вот немного теории с сайта linuxcenter.ru
А теперь пример из жизни Имеются следующие интерфейсы /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255
Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей 192.168.1.х-192.168.20.х
Интерфейс eth1 это связь с ADSL модемом с выходом в интернет. Так большинство запросов идут в Инет на этом интерфейсе прописываем шлюз (gateway 192.168.254.1) данный параметр указывает в системе шлюз по-умолчанию, обращаю внимание, что шлюз надо прописывать только на одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и естно будет затупление в работе. С интернетом разобрались.
Но требуется еще просматривать ресурсы локальной сети для этого надо выполнить вот эти команды
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
На этом примере маршрутизируются 3 подсети
Все эти команды и многие другие можно прописать в файлк
/etc/network/interfaces в итоге получится следующее:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255
Ну вот и все по аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов
Дополнение 1.
hwaddress ether 00:E0:4C:A2:C4:48
так легко можно изменить MAC, не забываем после редактирования файла делать рестарт
sudo /etc/init.d/networking restart
Дополнение 2.
Следует отметить, что:
1) Для того, чтобы просмотреть таблицу маршрутов достаточно запуска команды route без параметров или route -n, если в сети нет DNS.
2) Маска может быть записана проще, в виде /x, где x — число единичных битов, например:
route add -net 192.168.36.0/24 eth0
вместо
route add -net 192.168.36.0 netmask 255.255.255.0 eth0
Настройки сети размещаются в файле /etc/network/interfaces. При подключение к Inet через VPN (ppp0. ), необходимо заменять маршрут по умолчанию на ppp0. А проще указать в файле /etc/ppp/options следующее:
тогда маршрут заменяется сам и при отключении восстанавливается.
Дополнение 3.
Есть прога, серверная часть которой стоит во внутренней сети, например Radmin Server, чтобы к нему подключиться клиентская прога (Radmin Viewer) запрашивает соединение по порту 4799 (например). Все работает внутри локальной сети. Есть шлюз (с внешним IP), через который обеспечивает доступ в и-нет всех компов внутренней сети. Теперь вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше, например на 192.168.0.2 по томуже порту?
Для этого есть команда iptables:
iptables -t nat -D PREROUTING -i -s -p tcp —dport 4899 -j DNAT —to-destination 192.168.0.2:4899
Если ограничивать входящие IP не требуется, то опцию -s можно опустить.
Пример:
iptables -t nat -D PREROUTING -i vlan1 -s 213.87.34.20/24 -p tcp —dport 4899 -j DNAT —to-destination 192.168.128.24:4899
iptables -t nat -A PREROUTING -i eth0 -p udp —dport 3658 -j DNAT —to-destination 192.168.0.2:3658
Источник