Разное

Route delete linux: How to check routes (routing table) in linux

Содержание

Как очистить таблицу маршрутизации из кеша в Linux – Information Security Squad

В этой статье я расскажу, как очистить таблицу маршрутизации в Linux с помощью команд терминала.

Таблица маршрутизации в компьютерных сетях – это таблица данных, которая хранится на маршрутизаторе или сетевом сервере, который перечисляет маршруты к конкретным сетевым адресам.

Обычно каждый статический маршрут имеет связанную с ним метрику.

Эта метрика используется сетевыми устройствами для определения маршрута, который должен быть выбран для пакетов, предназначенных для конкретной сети.

Говоря в контексте Linux, они также поддерживают таблицу маршрутизации, в основном, когда сервер имеет более одного активного сетевого интерфейса.

В какой-то момент вам может понадобиться очистить таблицу маршрутизации или обновить ее, чтобы вы могли получить доступ к некоторым сетям.

Сеть (сети) может быть локальной в вашей организации или где используется обход общего интернета.

Большинство дистрибутивов Linux предоставляют два основных инструмента, используемых для этой задачи: инструменты ip и route.

Очистить таблицу маршрутизации с помощью команды ip

ip – это инструмент командной строки Unix / Linux, используемый для отображения и управления маршрутизацией, сетевыми устройствами, интерфейсами и туннелями.

Это замена обычно используемого инструмента ifconfig.

Этот инструмент может выполнять практически все виды сетевых конфигураций Linux для интерфейса.

Прежде чем очищать любые маршруты, сначала вам нужно проверить текущую таблицу маршрутизации, используя команду :

$ ip route 
default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 
192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192.168.0.16 metric 600

Как вы можете видеть из моего вывода, мой маршрут по умолчанию установлен в 192.168.0.1.

Это означает, что все пакеты, предназначенные для сетей, отличных от моей локальной подсети 192. 168.0.0/24, будут перенаправлены через 192.168.0.1.

Этот IP 192.168.0.1 предназначен для моего маршрутизатора.

Для демонстрационных целей я собираюсь запустить службу Docker на своем ноутбуке.

Docker имеет свою собственную подсеть. мы будем использовать это, чтобы продемонстрировать использование команды ip.

$ sudo systemctl start docker
$ ip route 
default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192.168.0.16 metric 600

Очистить определенный маршрут

Теперь у меня есть другой маршрут для подсети 172.17.0.0/16 через 172.17.0.1.

Если я хочу очистить этот маршрут, я буду использовать такую команду:

$ sudo ip route flush 172.17.0.0/16
$ ip route 
default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600 
192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192. 168.0.16 metric 600
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp1s0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp1s0

Вы можете подтвердить, что маршрут удален из таблицы маршрутизации.

Очистить все маршруты

Чтобы очистить все маршруты в таблицах маршрутизации, используются параметры ip-команды route flush table main.

Полные команды:

$ sudo ip route flush table main

$ ip route show 

Повторная проверка таблицы маршрутизации должна быть пустой.

Эту команду следует использовать с осторожностью, так как она может выбить вас из сервера, если вы не находитесь на прямом подключении или не имеете других методов доступа, таких как консоль, модем и т.д.

Очистить кеш маршрутизации

Ядро Linux обычно ссылается на кеш маршрутизации перед извлечением нового маршрута из таблиц маршрутизации.

Этот кеш можно очистить с помощью команды:

$ sudo ip route flush cache

Подтвердите все доступные кешированные маршруты:

$ sudo ip route show cache

Отображение статистики из кеша маршрутизации

Если вы хотите получить дополнительную информацию о кешированных маршрутах. используйте команды:

$ sudo ip -s route show cache

Дается дополнительная информация, такая как поле «used», которое указывает количество обращений к этому маршруту в кеше маршрутизации.

Для постоянного статического маршрута вы можете размещать маршруты в любом из следующих файлов:

/etc/sysconfig/static-routes or /etc/sysconfig/network-scripts/route-<interface>  # Red Hat and its derivatives - CentOS, Fedora e.t.c
/etc/network/interfaces # Debian and its derivatives

Примером постоянных маршрутов для CentOS 7 является:

# cat /etc/sysconfig/network-scripts/route-eth0

GATEWAY0=192.168.1.254
NETMASK0=255.255.255.0
ADDRESS0=192.168.5.0

GATEWAY1=10.10.10.1
NETMASK1= 255.255.255.240
ADDRESS1=10.164.234.132

Строка на Ubuntu / Debian будет выглядеть следующим образом:

up route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.1.254
down route del -net 192.168.5.0 netmask 255. 255.255.0 gw 192.168.1.254

 

Маршрутизация в Linux: VRF Lite / Хабр

Обычно VRF (Virtual Routing and Forwarding, VPN Routing and Forwarding) используется совместно с MPLS, но без оной в терминологии Cisco называется VRF-Lite. Суть этой технологии в том, что маршрутная информация, принадлежащая различным классам (например, маршруты одного клиента) изолируется друг от друга. Считается, что такие возможности есть только у «взрослых» железных решений, но это не совсем так. Благодаря наличию множественных таблиц маршрутизации, гибких политик маршрутизации всё это можно сделать и в Linux. Кому интересно, добро пожаловать под кат.

Типы маршрутов, таблицы маршрутизации и PBR в Linux

Прежде чем понять суть происходящего, познакомимся с некоторыми отличительными чертами сетевого стека Linux.

Первый отличительный момент — это специальные типы маршрутов. Когда ip-пакет приходит с какого-нибудь интерфейса, надо определить, адресован ли он этому хосту, или другому. Определяется это довольно элегантно — просто для адреса назначения ищется нужный маршрут в таблицах маршрутизации. Если пакет попадает на маршрут типа «local», значит он адресован непосредственно хосту, если нет, то значит его надо маршрутизировать дальше (при этом дальнейший маршрут уже известен) или сделать что-то ещё, в зависимости от типа маршрутов.

На данный момент поддерживается несколько типов маршрутов (подробнее о них можно посмотреть в мане ip-route, если пишет, что такого мана нет, то обновите пакет iproute на более свежий). Нас в данный момент интересуют только маршруты следующих типов:

  • unicast — обычный маршрут. Ничего интересного.
  • local — адрес назначения находится на данном хосте. После того, как выяснится, что пакет попадает на этот маршрут, будет производиться поиск подходящего сокета для него.
  • broadcast — широковещательный маршрут. Для входящих пакетов, попадающих на этот маршрут, практически нет отличий от маршрута local, за исключением дополнительных проверок на игнорирование широковещательных пакетов. Для исходящих же есть небольшое отличие: в заголовке канального уровня так же выставляется широковещательный адрес назначения при использовании широковещательных сетей.
  • unreachable — запрещающий маршрут. Для пакетов, попадающий на этот маршрут будет отослан отправителю icmp-пакет с сообщением о недоступности.
  • prohibit — подобен типу unreachable, только сообщение другое будет отправлено.
  • blackhole — пакет на этом маршруте будет молча отброшен

Таким образом, для маршрутизации транзитных пакетов нам достаточно наличия маршрута типа unicast, а для того, чтобы хост мог отвечать на пакеты, нужны ещё маршруты типов local и, опционально, broadcast. Ещё следует учесть то, что нам также нужны маршруты direct-connected сетей для того, чтобы обеспечить связность с соседними маршрутизаторами.

Маршруты сгруппированы в таблицы маршрутизации. По-умолчанию изначально в системе присутствуют три таблицы:

  • local (255) — в этой таблице находятся локальные и широковещательные маршруты. Эта таблица обслуживается автоматически и генерируется на основе адресов, назначенных интерфейсам.
  • main (254) — основная таблица маршрутизации. Автоматически в неё добавляются direct-connected маршруты. Так же если в параметрах утилиты ip не указана таблица маршрутизации, то подразумевается таблица main.
  • default (253) — таблица для маршрутов по-умолчанию. Её использование не прижилось и поэтому она, как правило, пустует всё время.

Имена таблиц хранятся в файле /etc/iproute2/rt_tables. Под номер таблицы отдано 32 бита, но максимальное количество таблиц в данный момент жёстко ограничено числом 256. Как добавлять/удалять/редактировать маршруты можно почитать в мане к ip-route.

Таблица, в которой надо искать маршруты, определяется политиками маршрутизации. Эта технология называется Policy Based Routing — маршрутизация на основе политик. Суть её в том, что основываясь на каких-либо критериях сетевого пакета мы либо выбираем таблицу, в которой надо искать маршрут, либо определяем действие, которое надо выполнить над пакетом. Каждая политика имеет номер (он может быть даже не уникальным), он же определяем приоритет. Просмотр политик осуществляется в порядке возрастания их приоритетов. Новые политики добавляются перед существующими.

На данный момент «критериями» политики являются

  • адреса источника и/или назначения
  • значение поля tos
  • интерфейс, с которого получен пакет
  • интерфейс, к которому привязан сокет
  • метка файерволла

Каждая политика имеет тип, который определяет действие над пакетом, если он под неё попадает:

  • unicast — используется по-умолчанию, при этом будет производиться поиск маршрута в заданной таблице маршрутизации.
  • blackhole/prohibit/unreachable — по действиям аналогичны соответствующим типам маршрутов.
  • nat — трансляция адресов без учёта состояний, практически не используется.
Запираем маршруты в таблицу

Теперь небольшой практический пример после скучного введения. Для начала, мы реализуем схему с vrf-lite вручную, а затем уже усложним пример динамической маршрутизацией.

Допустим, у нас есть вот такая схема:

Задача состоит в том, чтобы изолировать трафик различного «цвета» друг от друга. При этом адресные пространства цветов могут пересекаться, что делает задачу ещё более интересной. Неформально сформулируем цель: сделать так, чтобы пакеты каждого цвета не уходили за пределы своей таблицы маршрутизации и передавались только по интерфейсам своего цвета.

Для этого для каждого цвета создадим свою таблицу маршрутизации, и для удобства дадим им имя. Затем, добавим в таблицы direct-connected маршруты принадлежащих цвету интерфейсов. И в конце, добавим политики маршрутизации, чтобы пакеты использовали только свою таблицу.

Сначала назначаем интерфейсам адреса. При этом подключенные маршруты будут попадать в таблицу main, а локальные и широковещательные — в таблицу local.

ip address add 192.168.0.1/24 dev eth0
ip address add 192. 168.1.1/24 dev eth2
ip address add 192.168.2.1/24 dev eth3
ip address add 192.168.3.1/24 dev eth4

Добавляем для удобства имена таблиц маршрутизации.

echo "10 RED" >> /etc/iproute2/rt_tables
echo "20 GREEN" >> /etc/iproute2/rt_tables

Добавляем прямые маршруты в соответствующие таблицы. Нужны это для того, чтобы нам были доступны соседние маршрутизаторы.

ip route add 192.168.0.0/24 dev eth0 proto static scope link table RED
ip route add 192.168.1.0/24 dev eth2 proto static scope link table GREEN
ip route add 192.168.2.0/24 dev eth3 proto static scope link table GREEN
ip route add 192.168.3.0/24 dev eth4 proto static scope link table RED

Добавляем остальные маршруты.

ip route add 10.0.0.0/24 via 192.168.2.10 dev eth3 proto static table GREEN

Добавляем политики.

ip rule add iif eth0 pref 10 lookup RED
ip rule add iif eth4 pref 10 lookup RED
ip rule add iif eth2 pref 20 lookup GREEN
ip rule add iif eth3 pref 20 lookup GREEN

Есть один нюанс: что будет, если пакет одного цвета не находит маршрута в своей таблице? Значит, будет продолжен поиск маршрута в других таблицах, что для нас не очень хорошо. Чтобы «запереть» пакет в пределах своего цвета, мы можем в каждую изолированную таблицу добавить маршрут по-умолчанию (либо юникастовый, либо запрещающий), либо после каждой политики поиска маршрута в пределах цвета добавить запрещающую политику. Сделаем для одного цвета первый вариант, а для другого — второй.

ip route add unreachable default proto static table RED
ip rule add unreachable iif eth2 pref 21
ip rule add unreachable iif eth3 pref 21

Так же, желательно перенести все маршруты local и broadcast из таблицы local в таблицы соответствующих цветов, чтобы невозможно было обращаться к локальным интерфейсам маршрутизатора из «чужого» цвета. Для этого лучше всего написать какой-нибудь скрипт, чтобы было не так утомительно.

В итоге, наши таблицы маршрутизации и политики будут выглядеть примерно так:

ip route list table RED
unreachable default  proto static
broadcast 192.168.0.0 dev eth0  proto static  scope link
192.168.0.0/24 dev eth0  proto static  scope link
local 192. 168.0.1 dev eth0  proto static  scope host  src 192.168.0.1
broadcast 192.168.0.255 dev eth0  proto static  scope link
broadcast 192.168.3.0 dev eth4  proto static  scope link
192.168.3.0/24 dev eth4  proto static  scope link
local 192.168.3.1 dev eth4  proto static  scope host  src 192.168.3.1
broadcast 192.168.3.255 dev eth4  proto static  scope link

ip route list table GREEN
10.0.0.0/8 via 192.168.2.10 dev eth3  proto static
broadcast 192.168.1.0 dev eth2  proto static  scope link
192.168.1.0/24 dev eth2  proto static  scope link
local 192.168.1.1 dev eth2  proto static  scope host  src 192.168.1.1
broadcast 192.168.1.255 dev eth2  proto static  scope link
broadcast 192.168.2.0 dev eth3  proto static  scope link
192.168.2.0/24 dev eth3  proto static  scope link
local 192.168.2.1 dev eth3  proto static  scope host  src 192.168.2.1
broadcast 192.168.2.255 dev eth3  proto static  scope link

ip rule list
0:      from all lookup local
10:     from all iif eth0 lookup 10
10:     from all iif eth4 lookup 10
20:     from all iif eth2 lookup 20
20:     from all iif eth3 lookup 20
21:     from all iif eth2 unreachable
21:     from all iif eth3 unreachable
32766:  from all lookup main
32767:  from all lookup default

Собранный в GNS3 стенд показал правильность работы схемы. При обращении к чужому цвету, отправитель получает сообщение о недоступности точки назначения, как и было задумано.

На этом пока всё, но продолжение следует. В нём постараюсь рассказать про динамическую маршрутизацию применительно к vrf с помощью демона маршрутизации bird, и обмен маршрутами между таблицами (vrf leaking).

Статическая маршрутизация в Linux

Екатерина Марценюк
Опубликовано 29.06.2010

Серия контента:

Этот контент является частью # из серии # статей:

https://www. ibm.com/developerworks/ru/library/?series_title_by=**auto**

Следите за выходом новых статей этой серии.

Этот контент является частью серии:

Следите за выходом новых статей этой серии.

Преимущества и недостатки статической маршрутизации. Проблема эффективности сетей со статической маршрутизацией

Статическая маршрутизация является одним из способов задания маршрута следования пакетов в сетях. При этом протоколы маршрутизации не используются, а необходимая информация заносится системным администратором вручную в соответствующие таблицы маршрутизации. Использование статической маршрутизации разумно в небольших локальных сетях, где поднятие сервера DHCP для раздачи динамических IP-адресов оказывается более трудоемкой и ресурсозатратной задачей. Статические маршруты обладают преимуществом при передаче данных в каналах с узкой полосой пропускания, например, в аналоговых коммутируемых соединениях (через модем) или соединениях типа «точка-точка», поэтому они могут использоваться для создания резервного канала в случае отказа основного. Степень надежности маршрута определяется значением так называемой административной дистанции. Для статического маршрута оно равно 1, что ставит его на второе место по надежности после прямого соединения источника и получателя. Для того чтобы обеспечить резервный канал, достаточно изменить значение административной дистанции для определенного статического маршрута. Тогда при «падении» основного канала весь трафик заданной сети пойдет через резервный до восстановления основного. Этот вид маршрутизации называется плавающей статической маршрутизацией.

К статическим маршрутам также относится маршрут по умолчанию (default route). Он задается для тех пакетов сети, к которым не подходит ни одно из описанных правил в таблице маршрутизации, и позволяет осуществлять координацию трафика. Зачастую функцию шлюза по умолчанию выполняет центральный маршрутизатор, который связан со всеми остальными узлами и одной-двумя сетями.

Достоинства статической маршрутизации проявляются в полной мере в малых сетях. Она позволяет достаточно оперативно развернуть локальную сеть без затраты дополнительного времени на конфигурирование протоколов маршрутизации, а также снизить нагрузку на маршрутизатор за счет использования данных таблиц маршрутизации. Однако при масштабировании или изменении топологии такой сети могут возникнуть проблемы с ее администрированием, так как статические маршрутизаторы не обмениваются информацией друг с другом и с динамическими маршрутизаторами и не сообщают о наличии сбоя в каком-либо из маршрутизаторов или в канале связи. Внесение изменений в конфигурацию таблиц будет занимать больше времени, что в разы снижает эффективность сети со статической маршрутизацией. Тем не менее, в средних и крупных сетях грамотное использование преимуществ статической маршрутизации в сочетании с динамической в качестве основного способа распределения трафика позволяет обеспечить достаточно эффективную передачу данных.

Встроенные средства создания и настройки маршрутных таблиц в Linux

Для просмотра текущей таблицы маршрутизации на узле с установленной ОС Linux1 используется команда netstat -r или route:

$ netstat -r
Kernel IP routing table
w3.org/2001/XMLSchema-instance»>

DestinationGatewayGenmaskFlagsMSSWindowirttIface
192.168.10.0*255.255.255.0U000eth0
default192.168.10.2540.0.0.0UG000eth0

В этом примере в таблице маршрутизации присутствуют только две записи. Первая указывает на наличие доступа в подсеть 192.168.10.0. Так как узел принадлежит данной подсети, в использовании шлюза нет необходимости. Согласно второй записи, весь остальной трафик с этого узла перенаправляется на шлюз 192.168.10.254.

Все настройки сетевого интерфейса eth0 (в данном случае единственного) хранятся в конфигурационном файле /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0
HWADDR=00:1D:60:07:92:28
IPADDR=192. 168.10.14
NETMASK=255.255.255.0
BROADCAST=192.168.10.255
ONBOOT=yes

При добавлении второго сетевого интерфейса eth2 с IP-адресом 192.168.11.4 потребуется изменение конфигурации таблицы маршрутизации при помощи утилиты route2:

# route add -net 192.168.11.0 netmask 255.255.255.0 dev eth2

# netstat -r
Kernel IP routing table
DestinationGatewayGenmaskFlagsMSSWindowirttIface
192.168.10.0*255.255.255.0U000eth0
192.168.11.0*255. 255.255.0U000eth2
default192.168.10.2540.0.0.0UG000eth0

Настройки сетевого интерфейса eth2 заносятся в конфигурационный файл /etc/sysconfig/network-scripts/ifcfg-eth2:

DEVICE=eth2
HWADDR=00:0A:48:05:7B:DB
IPADDR=192.168.11.4
NETMASK=255.255.255.0
BROADCAST=192.168.11.255
ONBOOT=yes

Маршрутизатор сети 192.168.11.0 может быть связан с другой подсетью 192.168.12.0. В этом случае при необходимости настраивается так называемый транзитный маршрут, по которому пакеты, приходящие на eth2 с назначением в подсеть 192.168.12.0, будут перенаправлены на шлюз 192.168.11.1:

# route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.11.1  

# netstat -r
Kernel IP routing table
w3.org/2001/XMLSchema-instance»>

DestinationGatewayGenmaskFlagsMSSWindowirttIface
192.168.10.0*255.255.255.0U000eth0
192.168.11.0*255.255.255.0U000eth2
192.168.12.0192.168.11.1255.255.255.0UG000eth2
default192.168.10.2540.0.0.0UG000eth0

Для того чтобы внесенные изменения сохранились после перезагрузки узла, необходимо создать конфигурационный файл /etc/sysconfig/network-scripts/route-eth2, содержащий запись о транзитном маршруте:

192. 168.12.0/24 via 192.168.11.1

Для корректной работы двух и более сетевых интерфейсов на одном узле также необходимо в файле /etc/sysctl.conf установить значение параметра net.ipv4.ip_forward равным 1. Последним шагом будет перезагрузка сервиса network:

# /etc/init.d/network restart

1 Здесь и далее под ОС Linux подразумевается дистрибутив CentOS 5.2.

2 Здесь описаны только некоторые команды. Для более подробного изучения см. man route(8).

Настройка таблицы маршрутизации при помощи пакета iproute. Организация множественных таблиц маршрутизации

Пакет iproute, или iproute2, представляет собой набор утилит для конфигурирования сети и управления трафиком в дистрибутивах GNU/Linux. По сравнению с пакетом net-tools, в состав которого входят утилиты route и ifconfig, iproute2 имеет расширенный набор функций. Одной из основных задач, решаемых с его помощью, является конфигурирование таблиц маршрутизации различной степени сложности.

Iproute входит в состав стандартного дистрибутива CentOS, поэтому пакет можно установить в любой момент. Стоит отметить, что для его корректной работы требуется поддержка дополнительных опций маршрутизации (ip_advanced_router) и netfilter_netlink – по умолчанию в ядре 2.6 они включены.

Для создания и редактирования таблиц маршрутизации используется утилита ip route. Она поддерживает все стандартные типы маршрутов – local, unicast, broadcast, anycast и multicast, а также специальные – nat и throw (последний используется вместе с правилами политики роутинга).

Вывод команды ip route show эквивалентен результату вызова команды netstat -r или route, представленному в несколько другой форме:

# ip route show

192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.14
default via 192.168.10.254 dev eth0

Первая строка описывает маршрут для пакетов узла 192.168.10.14 в пределах локальной сети 192.168.10.0/24. Вторая указывает на шлюз 192. 168.10.254, прописанный для интерфейса eth0, по которому перенаправляется весь остальной трафик.

Для добавления, редактирования и удаления маршрута применяются соответствующие команды ip route add, ip route change/replace, ip route delete.

Утилита iproute поддерживает работу с множественными таблицами маршрутизации (в ядре Linux эта возможность существует, начиная с версии 2.2). Их создание обусловлено, в первую очередь, необходимостью реализации политики роутинга для более эффективного распределения трафика, например, при наличии быстрого и медленного каналов связи и различного приоритета узлов в локальной сети. Использование стандартных утилит для решения подобных задач, как правило, оказывается недостаточным в силу ограниченной функциональности.

Таблицы маршрутизации в iproute идентифицируются по номеру (от 1 до 255) или по названию, заданному в /etc/iproute2/rt_tables. Так, по умолчанию при просчитывании маршрутов ядро обращается к таблице main (ID 254), при этом данные о локальных и широковещательных адресах хранятся в отдельной таблице local (ID 255), которая имеет самый высокий приоритет и обновляется автоматически. Помимо организации стандартной маршрутизации есть возможность создавать собственные правила и таблицы для более сложного роутинга в связке с iptables, включающего, например, маршрутизацию маркированных пакетов, туннелирование, балансировку нагрузки и т.д.

Пример 1. Создание таблицы для маршрутизации пакетов с определенного IP-адреса

Локальная сеть 192.168.10.0/24 имеет выход в Интернет с двух разных провайдеров – по выделенной линии (быстрый канал) и модемному соединению (медленный канал). На маршрутизаторе М1 интерфейс eth0 (локальная сеть) имеет IP-адрес 192.168.10.1, интерфейс eth2 (выделенная линия) – IP-адрес 24.19.12.45 и шлюз 24.19.12.1, интерфейс ppp0 (модемное соединение) – IP-адрес 142.154.64.7 и шлюз 142.154.64.1. По умолчанию все пакеты сети 192.168.10.0/24 должны получать доступ в Интернет через выделенную линию, а узел 192.168.10.7 – через медленное модемное соединение.

Таблица main для М1, отправляющая все пакеты сети 192.168.10.0/24 на выделенную линию, будет выглядеть следующим образом:

# ip route list table main

24. 19.12.1 dev eth2  proto kernel  scope link  src 24.19.12.45  
142.154.64.1 dev ppp0  proto kernel  scope link  src 142.154.64.7 
192.168.10.0/24 dev eth0 proto kernel  scope link  src 192.168.10.1 
127.0.0.0/8 dev lo scope link 
default via 24.19.12.1 dev eth2

Для того чтобы задать перенаправление пакетов с IP-адреса 192.168.10.7 на медленное модемное соединение, необходимо создать новую таблицу modem_connection:

# echo 210 modem_connection >> /etc/iproute2/rt_tables

После этого задается новое правило: для всех пакетов, приходящих с IP-адреса 192.168.10.7, перенаправление будет осуществляться согласно таблице modem_connection:

# ip rule add from 192.168.10.7 table modem_connection

# ip rule ls
0:          from all lookup local 
32765:  from 192.168.10.7 lookup modem_connection
32766:  from all lookup main 
32767:  from all lookup default

Наконец, последним шагом будет прописывание правила для новой таблицы и очистка кэша маршрутов для вступления в силу сделанных изменений:

# ip route add default via 142. 154.64.7 dev ppp0 table modem_connection
# ip route flush cache

Пример 2. Добавление правила балансировки нагрузки для двух сетей

Принимая во внимание начальные параметры из предыдущего примера, изменим условие так, что по умолчанию все пакеты сети 192.168.10.0/24 получают доступ в Интернет через выделенную линию либо через ADSL-соединение (оба канала быстрые). Весь трафик, приходящий из этой сети, должен распределяться по двум каналам в пропорции 2:1.

Для того чтобы реализовать простую балансировку нагрузки, достаточно удалить из таблицы main старый маршрут по умолчанию и добавить новый со следующими параметрами:

# ip route del default
# ip route add default scope global
        nexthop via 24.19.12.1 dev eth2 weight 2
        nexthop via 142.154.64.1 dev ppp0 weight 1

Следует учитывать, что реализованная в данном примере балансировка не идеальна, так как маршруты имеют свойство кэшироваться. Для более эффективного распределения трафика следует использовать маркированные пакеты (опция fwmark) в сочетании с соответствующими настройками iptables.

Средства мониторинга и анализа сети со статической маршрутизацией

Вследствие того, что статические маршруты требуют ручной конфигурации, каждый раз при изменении топологии сети или других факторов важным моментом является наличие средств мониторинга сети для своевременного выявления неработающих узлов или шлюзов. Как правило, возможностей стандартных утилит ping (проверка соединения с узлом), ifconfig, traceroute (трассировка маршрутов следования до узла – по умолчанию в пределах 30 «прыжков»), route и netstat, входящих в состав любого дистрибутива GNU/Linux, оказывается достаточно для диагностики проблемы. Одной из полезных утилит, служащих для анализа сетевого трафика и отладки сетевой конфигурации, также является tcpdump.

Для графического отображения трассировки к хостам используется утилита tracemap3, написанная на Perl. С ее помощью можно строить графические карты для нескольких удаленных узлов, например, отдельной филиальной сети.

3http://xgu. ru/wiki/Tracemap

Заключение

Использование статической маршрутизации дает преимущества небольшим локальным сетям или отдельным сегментам сети с медленным каналом, в которых дополнительная нагрузка в виде служебного трафика влияет на скорость передачи данных. В средних и больших сетях статическая маршрутизация применима только в сочетании с динамической, что повышает эффективность сети и облегчает ее администрирование.

Ресурсы для скачивания

Маршрут по умолчанию — Xgu.ru

Материал из Xgu.ru

Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Автор: Игорь Чубин
Короткий URL: default_gateway

[править] Маршрут по умолчанию в Linux

[править] Просмотр маршрута

Просмотреть таблицу маршрутизации в Linux
можно множеством способов.
Наиболее распространённые это:
использовать программы netstat, route или ip.

 %$ netstat -rn
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
 192.168.80.0    192.168.1.196   255.255.255.0   UG        0 0          0 eth0
 192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
 0.0.0.0         192.168.1.198   0.0.0.0         UG        0 0          0 eth0
 %$ /sbin/route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 192.168.80.0    192.168.1.196   255.255.255.0   UG    0      0        0 eth0
 192.168.1.0     0.0.0.0         255.255. 255.0   U     0      0        0 eth0
 0.0.0.0         192.168.1.198   0.0.0.0         UG    0      0        0 eth0
 %$ ip r
 192.168.80.0/24 via 192.168.1.196 dev eth0 
 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.197 
 default via 192.168.1.198 dev eth0 

Во втором случае (/sbin/route)
использовался полный путь, поскольку программа вызывалась от имени пользователя,
у которого по умолчанию каталог /sbin/ не просматривается в поисках
исполняемых программ (переменная PATH).

Ключ -n
в программах netstat и route говорит о том, что не нужно
выполнять обратное преобразование IP-адресов и показывать вместо них DNS-имена.

Если нужна только запись о маршруте по умолчанию,
вывод можно отфильтровать:

 %# ip r | grep default

или

 %# ip r l s global
 default via 192.168.1.198 dev eth0 

или

 %# ip ro sh 0.0.0.0/0
 default via 192.168.1.198 dev eth0

и если нужен только IP-адрес:

 %# ip r | awk '/default/{print $3}'
 192. 168.1.198

[править] Смена маршрута

[править] Маршрут по умолчанию в FreeBSD

 route add default 192.168.37.2

[править] Маршрут по умолчанию в старых версиях FreeBSD

 route add 0.0.0.0/0 192.168.37.2

[править] Просмотр маршрута

 netstat -rn

[править] Смена маршрута

Процесс установки маршрута по умолчанию может выполнятся двумя способами:
1. Удалением записи о существующем маршруте(фиктивном), а далее добавлением записи о новом:

 # route delete default
 # delete net default
 # route add default 192.168.137.2
 # add net default: gateway 192.168.137.2
 # defaultrouter="192.168.137.2"

2. Изменением маршрута:

 # route change default 192.168.137.2

[править] Установка маршрута по умолчанию при запуске системы

В файле /etc/network/interfaces

Пример:

allow-hotplug eth0
iface eth0 inet static
        address 192. 168.137.11
        netmask 255.255.255.0
        network 192.168.137.0
        broadcast 192.168.107.255
# Указывам шлюз по умолчанию для интерфейса eth0
        gateway 192.168.137.2

В файле /etc/network/interfaces

В файле /etc/conf.d/net

В файле /etc/sysconfig/network

В файле /etc/sysconfig/network/routes

В переменной GATEWAY файла /etc/rc.d/rc.inet1.conf вручную или с помощью программы netconfig [1]

В файле /etc/sysconfig/network

В файле /etc/net/ifaces/NAME/iproute

[править] Автоматическая смена маршрута по умолчанию

[править] Задача

Есть два канала связи с Интернетом, через двух независимых провайдеров.
Нужно сделать так, что бы как только Интернет становится недоступным
через одно из соединений (не имеет значения из-за того что пропала связь с провайдером,
или потому что проблемы у провайдера),
автоматически менять маршрут по умолчанию
и использовать другой канал.

[править] Решение

Использовать скрипт:

СКРИПТ
Имя скрипта: change_default_route
Путь: /usr/local/sbin/change_default_route
Назначение скрипта: Скрипт контролирует доступность удалённой точки ${REMOTE_SITE} через известные внешние каналы. Если связь через основной канал теряется, осуществляется переход на резервный канал. Как только удалённая точка становится видна через основной канал, скрипт возвращает шлюз по умолчанию на него.

#!/bin/sh

GW_CONF=gateways
GW_RUN=current-gateway
REMOTE_SITE=10.0.3.3
OPENVPN_UPLINK_CONFIG=/etc/openvpn/server.conf

read_gateways_from_files()
{
    [ -f ${GW_CONF} ] && source ${GW_CONF}
    [ -f ${GW_CONF} ] || echo file ${GW_CONF} missing | logger -t $0 -p daemon. error
    GW=`cat ${GW_RUN} 2> /dev/null`
}

change_default_route()
{
  if ip route show | grep -q default
  then
    if ip route show | grep default | grep -q tun
    then
        [ ${GW} == ${DEFAULTGW} ] && return
        route delete default gw "$GW"
        route add default gw "$NEWGW"  && echo $NEWGW > ${GW_RUN}
        kill -1 `openvpn_uplink_pid`
    else
        [ -z "$GW" ] && GW=${DEFAULTGW}
        [ "$GW1" = "$GW" ] && NEWGW=$GW2 || NEWGW=$GW1
        route delete default gw "$GW"
        route add default gw "$NEWGW"  && echo $NEWGW > ${GW_RUN}
    fi
  else
    route add default gw "$DEFAULTGW"
    echo $DEFAULTGW > ${GW_RUN}
  fi
  echo "$1" | logger -t $0 -p daemon.info
}
while true
do
    read_gateways_from_files
    ip route show | grep default | grep -q tun \
    || ping -q -c 1 ${REMOTE_SITE} >& /dev/null \
    || change_default_route "Connection via ${GW} lost. Changing to another gateway (GW1=$GW1; GW2=$GW2; GW was ${GW})"

    [ "${GW}" != "${DEFAULTGW}" -a "${GW}" == "${GW1}" ] \
    && ping -q -c 1 -I "${IP2}" "${REMOTE_SITE}" >& /dev/null \
    && change_default_route "Link via ${GW2} has restored.  Changhing default gateway back (GW1=$GW1; GW2=$GW2; GW was ${GW}; now GW is ${GW2} )"

    [ "${GW}" != "${DEFAULTGW}" -a "${GW}" == "${GW2}" ] \
    && ping -q -c 1 -I "${IP1}" "${REMOTE_SITE}" >& /dev/null \
    && change_default_route "Link via ${GW1} has restored. Changhing default gateway back (GW1=$GW1; GW2=$GW2; GW was ${GW}; now GW is ${GW1} )"
    sleep 5
done

Скрипт может быть размещён /usr/local/bin/change_default_route

Скрипт должен вызываться автоматически при старте системы.
Например, в /etc/rc.local:

 nohup /usr/local/sbin/change_default_route &

или в /etc/network/interfaces

iface ...
 ....
 up nohup /usr/local/sbin/change_default_route &

Файл /etc/network/gateways
должен содержать адреса шлюзов, а также указание какой из них должен использоваться
по умолчанию:

#### ISP 1
IP1=10.0.1.1
GW1=10.0.1.2

#### ISP2
IP2=10.0.4.1
GW2=10.0.4.4

### Let ISP1 be default
DEFAULTGW=${GW1}

Если используется OpenVPN, при изменении маршрута
скрипт находит и перестартовывает процесс (процессы) openvpn,
который держит на один из адресов, указанных в конфигурационном
файле OpenVPN OPENVPN_UPLINK_CONFIG в директиве remote.

Если нужна однократная проверка,
например, при установке маршрута, для выбора того из них, который работает,
используйте такой скрипт:

/usr/local/bin/change_default_route

#!/bin/sh
change_default_route()
{
  [ -f /etc/network/gateways ] && source /etc/network/gateways
  GW=`cat /var/run/current-gateway 2> /dev/null` 
  [ -z "$GW" ] && GW=${DEFAULTGW}
  [ "$GW1" = "$GW" ] && NEWGW=$GW2 || NEWGW=$GW1
  route delete default gw "$GW" && route add default gw "$NEWGW" && echo $NEWGW > /var/run/current-gateway
}
for i in 1 2; do ping -q -c 1 ya.ru || ping -q -c 1 google.com || change_default_route ; sleep 1; done 

(ещё один вариант:)

IP1=192.168.201.2
IP2=192.168.211.2
GW1=192.168.201.1
GW2=192.168.211.1

while true
do
if ping -I $IP1 -c 1 10.0.35.1 >& /dev/null
then
        ip route change default via $GW1
else
        ping -I $IP2 -c 1 10.0.35.1 >& /dev/null && ip route change deflt
fi
sleep 1
done

Автоматическая правка файла /etc/default/gateways
выполняется при поднятии интерфейса с помощью скрипта:

# cat /etc/ppp/ip-up. d/eb_up 
#!/bin/sh
case $1 in
  ppp200)
    /bin/ip rule add from $4 lookup 3
    /bin/ip route add default via $5 table 3
    /usr/bin/perl -i -p -e 's/GW1=.*/GW1='"$5"/  /etc/network/gateways
    /usr/bin/perl -i -p -e 's/IP1=.*/IP1='"$4"/  /etc/network/gateways
;;
esac
exit 0

[править] Одновременное использование нескольких внешних каналов

[править] Задача

Есть два канала связи с Интернетом, через двух независимых провайдеров.
Нужно сделать так, чтобы если происходит обращение через интерфейс 1,
ответы должны уходить тоже через интерфейс 1 и с обратным адресом
интерфейса 1.

[править] Решение

Настроить и использовать policy routing.

Например для шлюзов GW1 и GW2, которые описываются в /etc/network/gateways:

. /etc/network/gateways
ip rule add from $IP1 lookup 2
ip rule add from $IP2 lookup 3
ip route add default via $GW1 table 2
ip route add default via $GW2 table 3
ip route add default via $DEFAULTGW

При использовании дополнительных таблиц маршрутизации необходимо либо отключить reverse path filter

 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 

либо перевести его в менее строгий режим

 echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter 

mamahtehok

Такая схема маршрутизации не будет правильно работать с iptables DNAT.
Другими словами, если с помощью iptables/netfilter пробрасывать обращения на какие-то порты внутрь сети, принцип «ответы уходят по тому каналу, по которому приходят запросы» работать не будет.

Как ни странно, проблема с iproute2 и DNAT в некоторых случаях может быть решена (SOLVED) простой парой команд:

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --sport 80 -j MARK --set-mark 1

Таким образом мы можем вручную (через ip rule fwmark 1) указать необходимую таблицу. (N, 21:34, 27 августа 2009 (UTC))

Для решения проблем с трансляцией соединений внутрь сети,
необходимо использовать схему с промежуточным шлюзом:

            GW1   GW2
             *     *
             |     | 
         IP1 |     | IP2
      [eth2] |     | [eth3]
            +-------+
            |       |
            |  gw   |
            |       |
            +-------+
    10.0.3.250  |  10.0.3.254
        [eth0]  |  [eth0:1]
                | 
                |
    10.0.3.249  |  10.0.3.253
        [eth2]  |  [eth2:1]
            +-------+
            |       |
            |  pgw  |
            |       |
            +-------+
               | 10.0.3.6
               | [eth0]
               |

В этом случае:

  • на шлюзе gw выполняется проброска на один из внутренних адресов, в зависимости от того, куда пришёл запрос;
  • на шлюзе pgw выполняется дальнейшая проброска внутрь сети.

Подобное решение описывается здесь [2].

[править] Дополнительная информация

Сетевой уровень

Основные консольные команды Linux (Ubuntu)


















































































































































































































































































































































































Команда

Описание

Системная информация

arch

отобразить архитектуру компьютера

uname -m

uname -r

отобразить используемую версию ядра

dmidecode -q

показать аппаратные системные компоненты — (SMBIOS / DMI)

hdparm -i /dev/hda

вывести характеристики жесткого диска

hdparm -tT /dev/sda

протестировать производительность чтения данных с жесткого диска

cat /proc/cpuinfo

отобразить информацию о процессоре

cat /proc/interrupts

показать прерывания

cat /proc/meminfo

проверить использование памяти

cat /proc/swaps

показать файл(ы) подкачки

cat /proc/version

вывести версию ядра

cat /proc/net/dev

показать сетевые интерфейсы и статистику по ним

cat /proc/mounts

отобразить смонтированные файловые системы

lspci -tv

показать в виде дерева PCI устройства

lsusb -tv

показать в виде дерева USB устройства

date

вывести системную дату

cal 2007

вывести таблицу-календарь 2007-го года

date 041217002007.00

установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)

clock -w

сохранить системное время в BIOS

Остановка системы

shutdown -h now

Остановить систему

init 0

telinit 0

shutdown -h hours:minutes &

запланировать остановку системы на указанное время

shutdown -c

отменить запланированную по расписанию остановку системы

shutdown -r now

перегрузить систему

reboot

logout

выйти из системы

Файлы и директории

cd /home

перейти в директорию ‘/home’

cd ..

перейти в директорию уровнем выше

cd ../..

перейти в директорию двумя уровнями выше

cd

перейти в домашнюю директорию

cd ~user

перейти в домашнюю директорию пользователя user

cd —

перейти в директорию, в которой находились до перехода в текущую директорию

pwd

показать текущюю директорию

ls

отобразить содержимое текущей директории

ls -F

отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип

ls -l

показать детализированое представление файлов и директорий в текущей директории

ls -a

показать скрытые файлы и директории в текущей директории

ls *[0-9]*

показать файлы и директории содержащие в имени цифры

tree

показать дерево файлов и директорий, начиная от корня (/)

lstree

mkdir dir1

создать директорию с именем ‘dir1’

mkdir dir1 dir2

создать две директории одновременно

mkdir -p /tmp/dir1/dir2

создать дерево директорий

rm -f file1

удалить файл с именем ‘file1’

rmdir dir1

удалить директорию с именем ‘dir1’

rm -rf dir1

удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое

rm -rf dir1 dir2

удалить две директории и рекурсивно их содержимое

mv dir1 new_dir

переименовать или переместить файл или директорию

cp file1 file2

сопировать файл file1 в файл file2

cp dir/* .

копировать все файлы директории dir в текущую директорию

cp -a /tmp/dir1 .

копировать директорию dir1 со всем содержимым в текущую директорию

cp -a dir1 dir2

копировать директорию dir1 в директорию dir2

ln -s file1 lnk1

создать символическую ссылку на файл или директорию

ln file1 lnk1

создать «жёсткую» (физическую) ссылку на файл или директорию

touch -t 0712250000 fileditest

модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Поиск файлов

find / -name file1

найти файлы и директории с именем file1. Поиск начать с корня (/)

find / -user user1

найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)

find /home/user1 -name «*.bin»

Найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’

find /usr/bin -type f -atime +100

найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней

find /usr/bin -type f -mtime -10

найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней

find / -name *.rpm -exec chmod 755 ‘{}’ ;

найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним

find / -xdev -name «*.rpm»

найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.

locate «*.ps»

найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’

whereis halt

показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’

which halt

отображает полный путь к файлу ‘halt’

Монтирование файловых систем

mount /dev/hda2 /mnt/hda2

монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’

umount /dev/hda2

размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’

fuser -km /mnt/hda2

принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем

umount -n /mnt/hda2

выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске

mount /dev/fd0 /mnt/floppy

монтировать флоппи-диск

mount /dev/cdrom /mnt/cdrom

монтировать CD или DVD

mount /dev/hdc /mnt/cdrecorder

монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

mount -o loop file.iso /mnt/cdrom

смонтировать ISO-образ

mount -t vfat /dev/hda5 /mnt/hda5

монтировать файловую систему Windows FAT32

mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share

монтировать сетевую файловую систему Windows (SMB/CIFS)

mount -o bind /home/user/prg /var/ftp/user

«монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно.

Дисковое пространство

df -h

отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)

ls -lSr |more

выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр

du -sh dir1

подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)

du -sk * | sort -rn

отображает размер и имена файлов и директорий, с соритровкой по размеру

rpm -q -a —qf ‘%10{SIZE}t%{NAME}n’ |sort -k1,1n

показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)

dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n

показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Пользователи и группы

groupadd group_name

создать новую группу с именем group_name

groupdel group_name

удалить группу group_name

groupmod -n new_group_name old_group_name

переименовать группу old_group_name в new_group_name

useradd -c «Nome Cognome» -g admin -d /home/user1 -s /bin/bash user1

создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome

useradd user1

создать пользователя user1

userdel -r user1

удалить пользователя user1 и его домашний каталог

usermod -c «User FTP» -g system -d /ftp/user1 -s /bin/nologin user1

изменить атрибуты пользователя

passwd

сменить пароль

passwd user1

сменить пароль пользователя user1 (только root)

chage -E 2005-12-31 user1

установить дату окончания действия учётной записи пользователя user1

pwck

проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow

grpck

проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group

newgrp [-] group_name

изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Выставление/изменение полномочий на файлы

ls -lh

просмотр полномочий на файлы и директории в текущей директории

ls /tmp | pr -T5 -W$COLUMNS

вывести содержимое директории /tmp и разделить вывод на пять колонок

chmod ugo+rwx directory1

добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом «chmod 777 directory1»

chmod go-rwx directory1

отобрать у группы и всех остальных все полномочия на директорию directory1.

chown user1 file1

назначить владельцем файла file1 пользователя user1

chown -R user1 directory1

назначить рекурсивно владельцем директории directory1 пользователя user1

chgrp group1 file1

сменить группу-владельца файла file1 на group1

chown user1:group1 file1

сменить владельца и группу владельца файла file1

find / -perm -u+s

найти, начиная от корня, все файлы с выставленным SUID

chmod u+s /bin/binary_file

назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.

chmod u-s /bin/binary_file

снять SUID-бит с файла /bin/binary_file.

chmod g+s /home/public

назначить SGID-бит директории /home/public.

chmod g-s /home/public

снять SGID-бит с директории /home/public.

chmod o+t /home/public

назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам

chmod o-t /home/public

снять STIKY-бит с директории /home/public

Специальные атрибуты файлов

chattr +a file1

позволить открывать файл на запись только в режиме добавления

chattr +c file1

позволяет ядру автоматически сжимать/разжимать содержимое файла.

chattr +d file1

указавет утилите dump игнорировать данный файл во время выполнения backup’а

chattr +i file1

делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.

chattr +s file1

позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.

chattr +S file1

указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync

chattr +u file1

данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить

lsattr

показать атрибуты файлов

Архивирование и сжатие файлов

bunzip2 file1.bz2

разжимает файл ‘file1.gz’

gunzip file1.gz

gzip file1

сжимает файл ‘file1’

bzip2 file1

gzip -9 file1

сжать файл file1 с максимальным сжатием

rar a file1.rar test_file

создать rar-архив ‘file1.rar’ и включить в него файл test_file

rar a file1.rar file1 file2 dir1

создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1

unrar x file1.rar

распаковать rar-архив

tar -cvf archive.tar file1

создать tar-архив archive.tar, содержащий файл file1

tar -cvf archive.tar file1 file2 dir1

создать tar-архив archive.tar, содержащий файл file1, file2 и dir1

tar -tf archive.tar

показать содержимое архива

tar -xvf archive.tar

распаковать архив

tar -xvf archive.tar -C /tmp

распаковать архив в /tmp

tar -cvfj archive.tar.bz2 dir1

создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)

tar -xvfj archive.tar.bz2

разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)

tar -cvfz archive.tar.gz dir1

создать архив и сжать его с помощью gzip

tar -xvfz archive.tar.gz

разжать архив и распаковать его

zip file1.zip file1

создать сжатый zip-архив

zip -r file1.zip file1 file2 dir1

создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий

unzip file1.zip

разжать и распаковать zip-архив

RPM пакеты (Fedora, Red Hat и тому подобное)

rpm -ivh package.rpm

установить пакет с выводом сообщений и прогресс-бара

rpm -ivh —nodeps package.rpm

установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей

rpm -U package.rpm

обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен

rpm -F package.rpm

обновить пакет только если он установлен

rpm -e package_name.rpm

удалить пакет

rpm -qa

отобразить список всех пакетов, установленных в системе

rpm -qa | grep httpd

среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»

rpm -qi package_name

вывести информацию о конкрентном пакете

rpm -qg «System Environment/Daemons»

отобразить пакеты входящие в группу пакетов

rpm -ql package_name

вывести список файлов, входящих в пакет

rpm -qc package_name

вывести список конфигурационных файлов, входящих в пакет

rpm -q package_name —whatrequires

вывести список пакетов, необходимых для установки конкретного пакета по зависимостям

rpm -q package_name —whatprovides

show capability provided by a rpm package

rpm -q package_name —scripts

отобразит скрипты, запускаемые при установке/удалении пакета

rpm -q package_name —changelog

вывести историю ревизий пакета

rpm -qf /etc/httpd/conf/httpd.conf

проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла.

rpm -qp package.rpm -l

отображает список файлов, входящих в пакет, но ещё не установленных в систему

rpm —import /media/cdrom/RPM-GPG-KEY

ипортировать публичный ключ цифровой подписи

rpm —checksig package.rpm

проверит подпись пакета

rpm -qa gpg-pubkey

проверить целостность установленного содержимого пакета

rpm -V package_name

проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета

rpm -Va

проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!

rpm -Vp package.rpm

проверить пакет, который ещё не установлен в систему

rpm2cpio package.rpm | cpio —extract —make-directories *bin*

извлечь из пакета файлы содержащие в своём имени bin

rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm

установить пакет, собранный из исходных кодов

rpmbuild —rebuild package_name.src.rpm

собрать пакет из исходных кодов

YUM — средство обновления пакетов(Fedora, RedHat и тому подобное)

yum install package_name

закачать и установать пакет

yum update

обновить все пакеты, установленные в систему

yum update package_name

обновить пакет

yum remove package_name

удалить пакет

yum list

вывести список всех пакетов, установленных в систему

yum search package_name

найти пакет в репозитории

yum clean packages

очисть rpm-кэш, удалив закачанные пакеты

yum clean headers

удалить все заголовки файлов, которые система использует для разрешения зависимостей

yum clean all

очисть rpm-кэш, удалив закачанные пакеты и заголовки

DEB пакеты (Debian, Ubuntu и тому подобное)

dpkg -i package.deb

установить / обновить пакет

dpkg -r package_name

удалить пакет из системы

dpkg -l

показать все пакеты, установленные в систему

dpkg -l | grep httpd

среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»

dpkg -s package_name

отобразить инфрмацию о конкретном пакете

dpkg -L package_name

вывести список файлов, входящих в пакет, установленный в систему

dpkg —contents package.deb

отобразить список файлов, входящих в пакет, который ешё не установлен в систему

dpkg -S /bin/ping

найти пакет, в который входит указанный файл.

APT — средство управление пакетами (Debian, Ubuntu и тому подобное)

apt-get install package_name

установить / обновить пакет

apt-cdrom install package_name

установить / обновить пакет с cdrom’а

apt-get update

получить обновлённые списки пакетов

apt-get upgrade

обновить пакеты, установленные в систему

apt-get remove package_name

удалить пакет, установленный в систему с сохранением файлов конфигурации

apt-get purge package_name

удалить пакет, установленный в систему с удалением файлов конфигурации

apt-get check

проверить целостность зависимостей

apt-get clean

удалить загруженные архивные файлы пакетов

apt-get autoclean

удалить старые загруженные архивные файлы пакетов

Просмотр содержимого файлов

cat file1

вывести содержимое файла file1 на стандартное устройсво вывода

tac file1

вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)

more file1

постраничный вывод содержимого файла file1 на стандартное устройство вывода

less file1

постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.

head -2 file1

вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

tail -2 file1

вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

tail -f /var/log/messages

выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.$/d’ example.txt

удалить пустые строки и комментарии из файла example.txt

echo ‘test’ | tr ‘[:lower:]’ ‘[:upper:]’

преобразовать символы из нижнего регистра в верхний

sed -e ‘1d’ result.txt

удалить первую строку из файла example.txt

sed -n ‘/string1/p’

отобразить только строки содержашие «string1»

sed -e ‘s/ *$//’ example.txt

удалить пустые символы в в конце каждой строки

sed -e ‘s/string1//g’ example.txt

удалить строку «string1» из текста не изменяя всего остального

sed -n ‘1,8p;5q’ example.txt

взять из файла с первой по восьмую строки и из них вывести первые пять

sed -n ‘5p;5q’ example.txt

вывести пятую строку

sed -e ‘s/0*/0/g’ example.txt

заменить последовательность из любого количества нулей одним нулём

cat -n file1

пронумеровать строки при выводе содержимого файла

cat example.txt | awk ‘NR%2==1’

при выводе содержимого файла, не выводить чётные строки файла

echo a b c | awk ‘{print $1}’

вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

echo a b c | awk ‘{print $1,$3}’

вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

paste file1 file2

объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m

paste -d ‘+’ file1 file2

объединить содержимое file1 и file2 в виде таблицы с разделителем «+»

sort file1 file2

отсортировать содержимое двух файлов

sort file1 file2 | uniq

отсортировать содержимое двух файлов, не отображая повторов

sort file1 file2 | uniq -u

отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)

sort file1 file2 | uniq -d

отсортировать содержимое двух файлов, отображая только повторяющиеся строки

comm -1 file1 file2

сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’

comm -2 file1 file2

сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’

comm -3 file1 file2

сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

Преобразование наборов символов и файловых форматов

dos2unix filedos.txt fileunix.txt

конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)

unix2dos fileunix.txt filedos.txt

конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)

recode ..HTML < page.txt > page.html

конвертировать содержимое тестового файла page.txt в html-файл page.html

recode -l | more

вывести список доступных форматов

Анализ файловых систем

badblocks -v /dev/hda1

проверить раздел hda1 на наличие bad-блоков

fsck /dev/hda1

проверить/восстановить целостность linux-файловой системы раздела hda1

fsck.ext2 /dev/hda1

проверить/восстановить целостность файловой системы ext2 раздела hda1

e2fsck /dev/hda1

 

e2fsck -j /dev/hda1

проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же

fsck.ext3 /dev/hda1

проверить/восстановить целостность файловой системы ext3 раздела hda1

fsck.vfat /dev/hda1

проверить/восстановить целостность файловой системы fat раздела hda1

fsck.msdos /dev/hda1

dosfsck /dev/hda1

Форматирование файловых систем

mkfs /dev/hda1

создать linux-файловую систему на разделе hda1

mke2fs /dev/hda1

создать файловую систему ext2 на разделе hda1

mke2fs -j /dev/hda1

создать журналирующую файловую систему ext3 на разделе hda1

mkfs -t vfat 32 -F /dev/hda1

создать файловую систему FAT32 на разделе hda1

fdformat -n /dev/fd0

форматирование флоппи-диска без проверки

mkswap /dev/hda3

создание swap-пространства на разделе hda3

swap-пространство

mkswap /dev/hda3

создание swap-пространства на разделе hda3

swapon /dev/hda3

активировать swap-пространство, расположенное на разделе hda3

swapon /dev/hda2 /dev/hdb3

активировать swap-пространства, расположенные на разделах hda2 и hdb3

Создание резервных копий (backup)

dump -0aj -f /tmp/home0.bak /home

создать полную резервную копию директории /home в файл /tmp/home0.bak

dump -1aj -f /tmp/home0.bak /home

создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak

restore -if /tmp/home0.bak

восстановить из резервной копии /tmp/home0.bak

rsync -rogpav —delete /home /tmp

синхронизировать /tmp с /home

rsync -rogpav -e ssh —delete /home ip_address:/tmp

синхронизировать через SSH-туннель

rsync -az -e ssh —delete ip_addr:/home/public /home/local

синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием

rsync -az -e ssh —delete /home/local ip_addr:/home/public

синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием

dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’

сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель

tar -Puf backup.tar /home/user

создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий

( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’

копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/

( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’

копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home

tar cf — . | (cd /tmp/backup ; tar xf — )

копирование одной директории в другую с сохранением полномочий и линков

find /home/user1 -name ‘*.txt’ |xargs cp -av —target-directory=/home/backup/ —parents

поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию

find /var/log -name ‘*.log’ | tar cv —files-from=- | bzip2 > log.tar.bz2

поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них

dd if=/dev/hda of=/dev/fd0 bs=512 count=1

создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск

dd if=/dev/fd0 of=/dev/hda bs=512 count=1

восстановить MBR с флоппи-диска на /dev/hda

CDROM

cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force

clean a rewritable cdrom

mkisofs /dev/cdrom > cd.iso

create an iso image of cdrom on disk

mkisofs /dev/cdrom | gzip > cd_iso.gz

create a compressed iso image of cdrom on disk

mkisofs -J -allow-leading-dots -R -V «Label CD» -iso-level 4 -o ./cd.iso data_cd

create an iso image of a directory

cdrecord -v dev=/dev/cdrom cd.iso

burn an ISO image

gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom —

burn a compressed ISO image

mount -o loop cd.iso /mnt/iso

mount an ISO image

cd-paranoia -B

rip audio tracks from a CD to wav files

cd-paranoia — «-3»

rip first three audio tracks from a CD to wav files

cdrecord —scanbus

scan bus to identify the channel scsi

Сеть (LAN и WiFi)

ifconfig eth0

показать конфигурацию сетевого интерфейса eth0

ifup eth0

активировать (поднять) интерфейс eth0

ifdown eth0

деактивировать (опустить) интерфейс eth0

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

выставить интерфейсу eth0 ip-адрес и маску подсети

ifconfig eth0 promisc

перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)

ifconfig eth0 -promisc

отключить promiscuous-режим на интерфейсе eth0

dhclient eth0

активировать интерфейс eth0 в dhcp-режиме.

route -n

вывести локальную таблицу маршрутизации

netstat -rn

route add -net 0/0 gw IP_Gateway

задать ip-адрес шлюза по умолчанию (default gateway)

route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1

добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1

route del 0/0 gw IP_gateway

удалить ip-адрес шлюза по умолчанию (default gateway)

echo «1» > /proc/sys/net/ipv4/ip_forward

разрешить пересылку пакетов (forwarding)

hostname

отобразить имя компьютера

host www.yandex.ru

разрешить имя www.yandex.ru хоста в ip-адрес и наоборот

host 93.158.134.3

ip link show

отобразить состояние всех интерфейсов

mii-tool eth0

отобразить статус и тип соединения для интерфейса eth0

ethtool eth0

отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения

netstat -tupn

отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, обеспечивающих эти соединения

netstat -tupln

отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, слушающих порты

tcpdump tcp port 80

отобразить весь трафик на TCP-порт 80 (обычно — HTTP)

iwlist scan

просканировать эфир на предмет, доступности беспроводных точек доступа

iwconfig eth2

показать конфигурацию беспроводного сетевого интерфейса eth2

Microsoft Windows networks(SAMBA)

nbtscan ip_addr

разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.

nmblookup -A ip_addr

smbclient -L ip_addr/hostname

отобразить ресурсы, предоставленные в общий доступ на windows-машине

smbget -Rr smb://ip_addr/share

подобно wget может получить файлы с windows-машин через smb-протокол

mount -t smbfs -o username=user,password=pass//winclient/share /mnt/share

смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему

IPTABLES (firewall)

iptables -t filter -nL

отобразить все цепочки правил

iptables -nL

iptables -t nat -L

отобразить все цепочки правил в NAT-таблице

iptables -t filter -F

очистить все цепочки правил в filter-таблице

iptables -F

iptables -t nat -F

очистить все цепочки правил в NAT-таблице

iptables -t filter -X

удалить все пользовательские цепочки правил в filter-таблице

iptables -t filter -A INPUT -p tcp —dport telnet -j ACCEPT

позволить входящее подключение telnet’ом

iptables -t filter -A OUTPUT -p tcp —dport http -j DROP

блокировать исходящие HTTP-соединения

iptables -t filter -A FORWARD -p tcp —dport pop3 -j ACCEPT

позволить «прокидывать» (forward) POP3-соединения

iptables -t filter -A INPUT -j LOG —log-prefix «DROP INPUT»

включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.

iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp —dport 22-j DNAT —to-destination 10.0.0.2:22

перенаправление пакетов, адресованных одному хосту, на другой хост

Мониторинг и отладка

top

отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

ps -eafw

отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

ps -e -o pid,args —forest

вывести PID’ы и процессы в виде дерева

pstree

отобразить дерево процессов

kill -9 98989

«убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)

kill -KILL 98989

kill -TERM 98989

Корректно завершить процесс с PID 98989

kill -1 98989

заставить процесс с PID 98989 перепрочитать файл конфигурации

kill -HUP 98989

lsof -p 98989

отобразить список файлов, открытых процессом с PID 98989

lsof /home/user1

отобразить список открытых файлов из директории /home/user1

strace -c ls > /dev/null

вывести список системных вызовов, созданных и полученных процессом ls

strace -f -e open ls > /dev/null

вывести вызовы бибилотек

watch -n1 ‘cat /proc/interrupts’

отображать прерывания в режиме реального времени

last reboot

отобразить историю перезагрузок системы

last user1

отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

lsmod

вывести загруженные модули ядра

free -m

показать состояние оперативной памяти в мегабайтах

smartctl -A /dev/hda

контроль состояния жёсткого диска /dev/hda через SMART

smartctl -i /dev/hda

проверить доступность SMART на жёстком диске /dev/hda

tail /var/log/dmesg

вывести десять последних записей из журнала загрузки ядра

tail /var/log/messages

вывести десять последних записей из системного журнала

Другие полезные команды

apropos …keyword

выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду

man ping

вызов руководства по работе с программой, в данном случае, — ping

whatis …keyword

отображает описание действий указанной программы

mkbootdisk —device /dev/fd0 `uname -r`

создаёт загрузочный флоппи-диск

gpg -c file1

шифрует файл file1 с помощью GNU Privacy Guard

gpg file1.gpg

дешифрует файл file1 с помощью GNU Privacy Guard

wget -r www.example.com

загружает рекурсивно содержимое сайта www.example.com

wget -c www.example.com/file.iso

загрузить файл www.example.com/file.iso с возможностью останова и продолжения в последствии

echo ‘wget -c www.example.com/files.iso’ | at 09:00

начать закачку в указанное время

ldd /usr/bin/ssh

вывести список библиотек, необходимых для работы ssh

alias hh=’history’

назначить алиас hh команде history
 

[Routing] Шпаргалка про роутинг в Ubuntu

Про правила добавления маршрутов в Windows я уже написал. Пришла пора написать про правила добавления маршрутов в любимой мною Ubuntu. Так же есть немного общей информации по данной теме, относящейся к Ubuntu и маршрутизации. И сразу поясню, что все действия требуется делать от имени суперпользователя (root).

Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.

Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация. Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего

jtprog@server_test:~$ 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          eth2  
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          eth2  
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          eth2

Если таблица пуста, то вы увидите только заголовки столбцов. С помощью команды route можно добавить или удалить один (за один раз) статический маршрут. Вот ее формат:

route операция -тип адресат шлюз интерфейс

Здесь аргумент “операция” может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется).

Аргумент “адресат” может быть IP-адресом машины, IP-адресом сети или ключевым словом default.

Аргумент “шлюз” — это IP-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером).

Команда:

удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения net или host. В первом случае в поле адресата указывается адрес сети, а во втором — адрес конкретного компьютера (хоста). Как правило, бывает необходимо настроить маршрутизацию по упоминавшимся выше трем интерфейсам:

  • локальный интерфейс (lo),
  • интерфейс для платы Ethetnet (eth0),
  • интерфейс для последовательного порта (PPP или SLIP).

Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127.0.X.X используется команда:

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-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации.

А теперь пример

Имеются следующие интерфейсы /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 eth2  
iface eth2 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.х

Интерфейс eth2 это связь с 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 eth2  
iface eth2 inet static  
  address 192.168.254.2  
  netmask 255.255.255.0  
  gateway 192.168.254.1  
  broadcast 192.168.254.255

По аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов. Обратите внимание:

hwaddress ether 00:E0:4C:A2:C4:48

так легко можно изменить MAC, не забываем после редактирования файла делать рестарт

sudo /etc/init.d/networking restart

Так же отмечу, что:

  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 следующее:

defaultroute  
replacedefaultroute

тогда маршрут заменяется сам и при отключении восстанавливается.

Есть прога, серверная часть которой стоит во внутренней сети, например Radmin Server, чтобы к нему подключиться клиентская прога (Radmin Viewer) запрашивает соединение по порту 5588 (например). Все работает внутри локальной сети. Есть шлюз (с внешним IP), через который обеспечивает доступ в и-нет всех компов внутренней сети. Теперь вопрос, как настроить шлюз, чтобы при обращении из вне клиентсокой частью к IP шлюза по порту 4799, он пробрасывал этот запрос дальше, например на 192.168.0.2 по томуже порту? Для этого есть команда iptables.

На этом все! Profit!

Как проверить маршруты (таблицу маршрутизации) в linux

Маршрут — это не что иное, как путь или путь к определенному или диапазону IP-адресов назначения. Ядро Linux поддерживает эти маршруты, называемые таблицей маршрутизации ядра, и соответствующим образом направляет трафик.

Вы можете использовать любой из них для отображения таблицы маршрутизации

маршрут
netstat
ip

Командный маршрут

Командный маршрут используется для изменения и проверки существующих маршрутов.Чтобы проверить таблицу маршрутизации с помощью команды route,

Это отобразит список маршрутов, настроенных в настоящее время

Команда: route -n

$ route -n
Таблица IP-маршрутизации ядра
Шлюз назначения Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0

$ route -n

Таблица IP-маршрутизации ядра

Флаги Genmask шлюза назначения Метрика Ref Use Iface

0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0

192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0

Это даст результат без разрешения имен

Команда netstat

Эта команда предоставляет статистику сети. С помощью этой команды вы можете сделать больше, чем просто распечатать таблицу маршрутизации,

.

Печать сетевых подключений,
таблиц маршрутизации,
статистики интерфейса,
маскарадных подключений и
группового членства

Для проверки таблицы маршрутизации,

Команда : nestat -rn

$ netstat -rn
Таблица IP-маршрутизации ядра
Шлюз назначения Genmask Флаги Окно MSS irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0

$ netstat -rn

Таблица IP-маршрутизации ядра

Флаги Genmask шлюза назначения MSS Window irtt Iface

0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0

Где

Опция -r отображает таблицу маршрутизации

Параметр -n не разрешает имена.Распечатать только IP-адреса

Команда IP

Проверить таблицу маршрутизации с помощью команды ip

Команда : список маршрутов IP

список маршрутов $ ip
по умолчанию через 192.168.0.1 dev wlan0 proto static
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.5 metric 9

$ ip route list

по умолчанию через 192.168.0.1 dev wlan0 proto static

192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.5 метрика 9

Чтобы найти переходы, маршрут пункта назначения и то, как ваша машина достигает пункта назначения, вы используете tracepath

tracepath howto.lintel.in

tracepath howto.lintel.in

Где можно заменить howto.lintel.in с конкретным доменом или IP-адресом.

Связанные

LinuxBegin.ru — iproute 2 Linux-

iproute 2

Ը, 4.05.03, http://www.vadim.org.ua

Linux, UNIX, ifconfig, arp route. Linux, 2.2,,,, .. iproute2,.

ip ifconfig, маршрут arp,:

IP [] [[]]

-,.

:

  • -V, -Version — (stdout) ip
  • -s, -stats, -statistic -.
  • -f, — семейство -, inet (IPv4), inet6 (IPv6)
    ссылка на сайт (). ,,.
  • -4 — -семейство инет
  • -6 — -семейство inet6
  • -0 — -семейная ссылка
  • -o, -oneline -.
  • -r -.

-,. :

  • ссылка —
  • Адрес

  • — IPv4 IPv6.
  • сосед — ARP
  • маршрут —
  • Правило

  • madress — Multicast-,,. . , Ethernet.
  • mroute — Multicast-.
  • туннель — IP.

.


IP ссылка -.

: установить шоу (список).

набор IP-ссылок -.

:

  • dev -, -.
  • вверх () вниз () -.
  • arp on arp off — NOARP.
  • многоадресная передача при отключенной многоадресной передаче — MULTICAST.
  • динамическое включение динамическое выключение — ДИНАМИЧЕСКИЙ.
  • наименование —
  • txqueuelen txqlen -.
  • MTU — MTU.
  • адрес -.
  • трансляция brd -.

ip ссылка показать (список, ls, sh, lst, l) -.:

:

eth0

# ip ссылка ls dev eth0

:

eth0: mtu 1500 qdisc cbq qlen 100
ссылка / эфир 00: 04: 61: 92: 21: 1d brd ff: ff: ff: ff: ff: ff

eth0

#ip -s ссылка ls dev eth0

2: eth0: mtu 1500 qdisc cbq qlen 100
link / ether 00: 04: 61: 92: 21: 1d brd ff: ff: ff: ff: ff: ff
RX: байты пакеты ошибок сброшены переполнение mcast
2891892504 15070935 0 0 0 0
TX: байты, пакеты, ошибки, сброшены, коллизии несущей
31370 54387014 0 0 0 132934


IP-адрес -.

адрес: адрес, а. адрес — IPv4 IPv6, -,. IP. айпи адрес , , .

IP-адрес добавить -.

:

  • dev -.
  • местный -.
  • пиров — PPP.
  • трансляция -. «+» «-», /.
  • этикетка -,,,.

:

ip addr add 10.0.0.1/24 brd + dev eth0 label eth0: Псевдоним

10.0.0.1 / 24 255.255.255.0 eth0: Псевдоним.

удаление IP-адреса -. : delete, del, d.

:

IP-адрес del 127.0.0.1/8 dev lo

127.0.0.1/8 lo.

IP-адрес показать -. : показать, список, lst, sh, ls, l. :

:

[электронная почта защищена]: ~ $ ip addr ls eth0
3: eth0: mtu 1500 qdisc cbq qlen 100
link / ether 00: a0: cc: 66: 18: 78 brd ff: ff: ff: ff: ff: ff
инет 193.233.7.90 / 24 brd 193.233.7.255 глобальная область действия eth0
inet6 3ffe: 2400: 0: 1: 2a0: ccff: fe66: 1878/64 глобальная динамическая область видимости
valid_lft навсегда предпочтительный_lft 604746sec
inet6 fe80 :: 2a0: ccff: fe66: 1878/10, ссылка на область применения
[электронная почта защищена]: ~

долларов США


IP-маршрут -.

: трасса, ро, р.

ip route add —
ip route change —
ip route replace —

: добавить, а; изменить, chg; заменить, ответ.

:

  • к -.
  • метрическая -.
  • Таблица

  • -. / и т.д. / iproute2 / rt_tables
  • dev -.
  • через —
  • src —
  • nexthop NEXTHOP -,.
  • через
  • dev -.
  • вес -,.

:

10.0.0 / 24 193.233.7.65

ip route добавить 10.0.0 / 24 через 193.233.7.65

:

ip route добавить область по умолчанию global nexthop dev ppp0
nexthop dev ppp1

ip route удалить -.

: удалить, del, d.

: добавление IP-маршрута.

:

, г.

ip route del default scope global nexthop dev ppp0
nexthop dev ppp1


IP правило

: правило, ру

« ИП. 3:

  • Локальный (ID 255) -,.
  • Main (ID 254) -.
  • По умолчанию (ID 253) -.

ip правило добавить -.
Удаление правила IP -.

: добавить, а; удалить, del, d

:

  • из —
  • к —
  • иф —
  • fwmark — брандмауэр.
  • Таблица

  • -. / и т.д. / iproute2 / rt_tables
  • приоритет -.

:

192.203.80.0/24 пример.

ip ru добавить из 192.203.80.0/24 пример таблицы prio 220


.

1.: IP 212.64.94.251, PPP c 212.64.94.1, c 212.64.78.148, PPP c 195.96.98.253. . :

# echo 200 User >> / etc / iproute2 / rt_tables
# ip rule add from 10.0.0.10 table John
# ip rule ls
0: from all lookup local
32765: from 10.0.0.10 lookup John
32766: from all основной поиск
32767: из всех поисков по умолчанию

.

# ip route добавить значение по умолчанию через 195.96.98.253 dev ppp2 table John
# ip route flush cache

2. 80 eth0. , 80.

# iptables -A PREROUTING -i eth0 -t mangle -p tcp —dport 80
-j MARK —set-mark 2

.

# echo 202 www.out >> / etc / iproute2 / rt_tables
# ip rule add fwmark 2 table www.out
# ip route add default через 10.0.0.2 dev eth0 table www.out
# ip route flush cache


:

1.Справочник по IP-командам — ​​Алексей Н. Кузнецов
2. Linux Advanced Routing & Traffic Control HOWTO

Справка по командам маршрута Linux и примеры

Обновлено: 04.05.2019 компанией Computer Hope

В Unix-подобных операционных системах команда route отображает или изменяет таблицу IP-маршрутизации.

В этом документе описывается Linux-версия маршрута .

Описание

В компьютерных сетях маршрутизатор — это устройство, отвечающее за пересылку сетевого трафика.Когда дейтаграммы поступают на маршрутизатор, маршрутизатор должен определить лучший способ направить их к месту назначения.

В Linux, BSD и других Unix-подобных системах команда route используется для просмотра и внесения изменений в таблицу маршрутизации ядра. Синтаксис команд различается в разных системах; здесь, когда дело доходит до синтаксиса конкретной команды, мы обсудим версию для Linux.

Запуск route в командной строке без каких-либо параметров отображает записи таблицы маршрутизации:

 маршрут 
 Таблица IP-маршрутизации ядра
Шлюз назначения Genmask Флаги Метрика Ссылка Использование Iface
по умолчанию 192.168.1.2 0.0.0.0 UG 1024 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 

Это показывает нам текущую конфигурацию системы. Если пакет поступает в систему и имеет место назначения в диапазоне от 192.168.1.0 до 192.168.1.255 , то он пересылается на шлюз * , то есть 0.0.0.0 — специальный адрес, представляющий неверный или несуществующий пункт назначения. Таким образом, в этом случае наша система не будет маршрутизировать эти пакеты.

Если пункт назначения не входит в этот диапазон IP-адресов, он перенаправляется на шлюз по умолчанию (в данном случае 192.168.1.2 , и эта система определит, как перенаправить трафик на следующий шаг к его адресату.

Синтаксис

 маршрут [-CFvnee] 
 маршрут [-v] [-A  family ] добавить [-net | -host] target [netmask  Nm ] [gw  Gw ]
      [метрика  N ] i [mss  M ] [окно  W ] [irtt  m ] [отклонить] [mod] [dyn]
      [восстановить] [[dev]  Если ] 
 маршрут [-v] [-A  family ] del [-net | -host] target [gw  Gw ] [маска сети  Nm ]
      [метрика  N ] [[dev]  Если ] 
 маршрут [-V] [--version] [-h] [--help] 

Техническое описание

route управляет таблицами IP-маршрутизации ядра.Его основное использование — установка статических маршрутов к определенным хостам или сетям через интерфейс после его настройки с помощью программы ifconfig.

Когда используются опции add или del , route изменяет таблицы маршрутизации. Без этих параметров route отображает текущее содержимое таблиц маршрутизации.

Опции

-A семейство использует указанное семейство адресов (например, « inet »; используйте « route —help » для получения полного списка).
-F работают с таблицей маршрутизации ядра FIB (Forwarding Information Base). Это значение по умолчанию.
-C работают с кешем маршрутизации ядра.
-v выберите подробную операцию.
показывают числовые адреса вместо попыток определения символьных имен хостов. Это полезно, если вы пытаетесь определить, почему пропал маршрут к вашему серверу имен.
-e использовать netstat-format для отображения таблицы маршрутизации. -ee сгенерирует очень длинную строку со всеми параметрами из таблицы маршрутизации.
del удалить маршрут.
доб. добавить новый маршрут.
цель сеть или хост назначения. Вы можете указать IP-адреса в десятичном формате с точками или в именах хостов / сетей.
-нет цель — сеть.
— хост цель — хост.
маска сети NM при добавлении сетевого маршрута, сетевая маска, которая будет использоваться.
gw GW маршрутизируют пакеты через шлюз. ПРИМЕЧАНИЕ. Сначала должен быть доступен указанный шлюз. Обычно это означает, что вам необходимо заранее настроить статический маршрут к шлюзу.Если вы укажете адрес одного из ваших локальных интерфейсов, он будет использоваться для принятия решения об интерфейсе, на который следует направлять пакеты. Это взлом совместимости в стиле BSD.
метрическая M устанавливает метрическое поле в таблице маршрутизации (используется демонами маршрутизации) равным M .
МС M устанавливает максимальный размер сегмента TCP (MSS) для соединений по этому маршруту равным M байт.По умолчанию используется MTU устройства за вычетом заголовков или меньшее значение MTU при обнаружении пути mtu. Этот параметр можно использовать для принудительного выполнения меньших пакетов TCP на другом конце, когда обнаружение mtu пути не работает (обычно из-за неправильно настроенных брандмауэров, которые блокируют необходимость фрагментации ICMP)
окно W устанавливает размер окна TCP для соединений по этому маршруту равным Вт байт. Это используется только в сетях AX.25 и с драйверами, которые не могут обрабатывать обратные кадры.
irtt м устанавливает начальное время приема-передачи ( irtt ) для TCP-соединений по этому маршруту равным м миллисекунд ( 1 12000 ). Используется только в сетях AX.25. Если опущено, используется RFC 1122 по умолчанию 300 мс .
отклонить устанавливает блокирующий маршрут, который приведет к сбою поиска маршрута. Это, например, используется для маскировки сетей перед использованием маршрута по умолчанию.Это НЕ для брандмауэра.
мод , dyn , восстановить установить динамический или измененный маршрут. Эти флаги предназначены для диагностических целей и обычно устанавливаются только демонами маршрутизации.
dev Если принудительно связывает маршрут с указанным устройством, поскольку в противном случае ядро ​​будет пытаться определить устройство самостоятельно (путем проверки уже существующих маршрутов и спецификаций устройства, а также места добавления маршрута).В большинстве обычных сетей вам это не понадобится.

Если dev Если — последняя опция в командной строке, слово dev можно опустить, так как оно используется по умолчанию. В противном случае порядок модификаторов маршрута ( метрика маска сети gw dev ) не имеет значения.

Примеры

 маршрут -n 

Показывает таблицу маршрутизации для всех IP-адресов, привязанных к серверу.

 route add -net 192.56.76.0 маска сети 255.255.255.0 dev eth0 

добавляет маршрут к сети 192.56.76.x через «eth0» Модификатор сетевой маски класса C здесь не нужен, потому что> 192. * — это IP-адрес класса C. Слово « dev » здесь можно опустить.

 route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 

Эта команда устанавливает для всех IP-маршрутов класса D (многоадресной рассылки) « eth0 «. Это правильная нормальная конфигурация для многоадресного ядра.

arp — Управление системным кешем ARP.
ifconfig — просмотр или изменение конфигурации сетевых интерфейсов.
ip — Отображение и управление информацией о маршрутизации, устройствах, политике маршрутизации и туннелях.
netstat — Распечатывает информацию о сетевых подключениях, таблицах маршрутизации, статистике интерфейсов, маскарадных подключениях и членстве в многоадресной рассылке.

Описание команды

Route в Linux

Введение

Сеть — это основа любой стабильной корпоративной инфраструктуры.Для нас, как системного администратора, важно понимать сетевой стек операционных систем Linux и то, как получить доступ к сетевой информации, а также управлять ею или изменять ее при необходимости. Мы написали статьи, объясняющие использование команд ifconfig и ip, которые по сути позволяют нам добавлять / удалять / обновлять IP-адреса на сервере Linux. Хотя маршрутизация — это термин, с которым сетевой администратор, вероятно, будет более знаком, но системные администраторы также часто с ним сталкиваются.
В простейшем смысле маршрутизация — это средство отправки IP-пакета из одной точки в другую. IP-пакет в этом случае — это любая информация, которая передается во время связи по сети. В операционных системах Linux информация о том, как должны пересылаться пакеты, хранится в структуре ядра, называемой таблицей маршрутизации. Нам нужно манипулировать этой таблицей при настройке наших систем для взаимодействия с другими серверами в сети. Команда route используется для управления таблицами маршрутизации ядра.Его основное использование — установка статических маршрутов к определенным хостам или сетям.

Маршруты могут быть статическими или динамическими. Динамические маршруты добавляются на специализированных маршрутизаторах, тогда как на уровне операционной системы мы используем только статические маршруты. В этой статье мы объясним на примерах, как использовать команду route для отображения и управления таблицей маршрутизации ядер Linux.

Пример 1: Показать существующие маршруты
Чтобы отобразить существующие маршруты, установленные в системе, запустите команду route без каких-либо параметров, как показано ниже.

  [root @ linuxnix ~] # маршрут 
  Таблица IP-маршрутизации ядра 
  Шлюз назначения Genmask Flags Metric Ref Use Iface 
  192.168.23.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 
  [root @ linuxnix ~] #  

Ниже приводится описание некоторых важных полей, упомянутых в приведенных выше выходных данных командной строки.

  • Столбец «Назначение» определяет сеть назначения.
  • Столбец «Шлюз» определяет шлюз, определенный для указанной сети.0.0.0.0 означает, что сеть локально подключена к этому интерфейсу и больше не требуется переходов для доступа к нему.
  • Столбец Genmask показывает сетевую маску для сети
  • В разделе «Флаги» флаг U означает, что маршрут идет вверх.
  • В столбце Iface отображается сетевой интерфейс

Пример 2: Добавление маршрута по умолчанию
Для операционных систем Linux шлюзом по умолчанию обычно является IP-адрес маршрутизатора, к которому подключена система.Концепция шлюза по умолчанию в основном подразумевает, что если операционная система не имеет маршрута или пункта назначения для отправки IP-пакета, то он отправляется через шлюз по умолчанию. Синтаксис для добавления маршрута по умолчанию следующий:

  маршрут добавить gw по умолчанию   

Ниже приведен пример.

  [root @ linuxnix ~] # маршрут добавить gw по умолчанию 192.168.23.1 
  [root @ linuxnix ~] #  

Чтобы убедиться, что маршрут по умолчанию добавлен, мы запускаем команду route -n.

  [root @ linuxnix ~] # route -n 
  Таблица IP-маршрутизации ядра 
  Шлюз назначения Genmask Flags Metric Ref Use Iface 
  0.0.0.0 192.168.23.1 0.0.0.0 UG 0 0 0 ens33 
  192.168.23.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 
  [root @ linuxnix ~] #  

Флаг G в разделе «Флаги» означает, что для этого маршрута следует использовать указанный шлюз. Пункт назначения 0.0.0.0 подразумевает, что все, что еще не классифицировано, должно быть отправлено по указанному маршруту по умолчанию.Обратите внимание, что в системе может быть только один шлюз по умолчанию.

Пример 3: Добавление маршрута
Мы можем добавить сетевой маршрут, а также маршрут хоста, используя команду route. Ниже приведен пример добавления сетевого маршрута с помощью команды route.

  [root @ linuxnix ~] # route add -net 192.168.23.0 netmask 255.255.255.0 gw 192.168.23.1 
  [root @ linuxnix ~] # 
  [root @ linuxnix ~] # route -n 
  Таблица IP-маршрутизации ядра 
  Шлюз назначения Genmask Flags Metric Ref Use Iface 
  192.168.23.0 192.168.23.1 255.255.255.0 UG 0 0 0 ens33 
  192.168.23.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 
  [root @ linuxnix ~] #  

Пример 4: Удаление маршрута
Чтобы удалить маршрут, мы просто заменяем слово add, используемое в предыдущем примере, на del, как показано в примере ниже.

  [root @ linuxnix ~] # route del -net 192.168.23.0 сетевая маска 255.255.255.0 gw 192.168.23.1 
  [root @ linuxnix ~] # 
  [root @ linuxnix ~] # route -n 
  Таблица IP-маршрутизации ядра 
  Шлюз назначения Genmask Flags Metric Ref Use Iface 
  192.168.23.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 
  [root @ linuxnix ~] #  

Пример 5: Блокировать доступ к одному хосту
Мы можем заблокировать доступ к определенному хосту или сети, отклонив маршруты к нему. Ниже приведен пример блокировки доступа к хосту с IP-адресом 193.168.23.131.

  [root @ linuxnix ~] # route add -host 193.168.23.131 reject 
  [root @ linuxnix ~] # 
  [root @ linuxnix ~] # route -n 
  Таблица IP-маршрутизации ядра 
  Шлюз назначения Genmask Flags Metric Ref Use Iface 
  192.168.23.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 
  193.168.23.131 - 255.255.255.255! H 0 - 0 - 
  [root @ linuxnix ~] #  

Знак H в разделе «Флаги» указывает, что это маршрут к хосту, а! указывает на то, что маршрут отклоняется или блокируется.

Заключение

На этом мы завершаем краткое обсуждение концепции IP-маршрутизации в Linux и команды route в Linux. Мы хотели бы упомянуть, что если вы работаете с сетью, которая арендует свой IP-адрес у DHCP, то вполне вероятно, что DHCP-сервер добавит маршрут на хост, который будет служить маршрутом по умолчанию.Маршруты, которые мы добавляем с помощью команды route, не сохраняются при перезагрузке. Чтобы они сохранялись при перезагрузках, нам нужно добавить их в соответствующий файл / etc / sysconfig / network-scripts / route- <имя интерфейса>.

Просмотры сообщений:
4822

Следующие две вкладки изменяют содержимое ниже.

Свою карьеру в ИТ начал в 2011 году системным администратором. С тех пор он работал с операционными системами HP-UX, Solaris и Linux, а также работал с решениями для обеспечения высокой доступности и виртуализации.Он проявляет большой интерес к сценариям оболочки, Python и Perl и изучает основы облака AWS, инструментов DevOps и методологий. Ему нравится делиться знаниями, полученными за эти годы, с остальной частью сообщества.

Как создать IP-маршрут в Linux / Unix

Для маршрутизации Solaris, вы должны увидеть нашу IP-маршрутизацию в Oracle Solaris . Вы знаете, что ОС Linux можно использовать в качестве роутера? Мы увидим, как реализовать маршрутизацию в Linux.Когда я работал в Cisco Systems, они использовали серверы Linux в качестве маршрутизаторов в своих тестовых средах для связи между фактическими маршрутизаторами в лабораторной среде, чтобы сэкономить на затратах, поскольку они не требуют сложной маршрутизации. Даже есть проект под названием Linux routing и отдельный вариант Linux для маршрутизации ; в этом гибкость Linux. Давайте начнем с некоторых основных команд маршрутизации. В Linux / * nix любую работу можно выполнять двумя способами.

1) То есть временный способ (после перезагрузки этих изменений не будет) и

2) Другой способ постоянный (после перезагрузок тоже будут изменения).

Мы увидим, как добавлять маршруты как временные, так и постоянные

Пример 1: Добавить путь к сети

Синтаксис:

  #route add -net network / mask gw default-gateway 
 

Пример

  #route add -net 10.10.10.0/24 gw 192.168.0.1 
 

Пример 2: Добавление шлюза по умолчанию Синтаксис:

  #route add default gw default-gateway 
 

Пример

  #route add default gw 192.168.0.1 
 

Пример 3: Добавление маршрута к определенному хосту

  #route add -host имя-хоста gw-шлюз по умолчанию 
 

Пример:

  #rotue add -host 2.34.5.6 gw 192.168.0.1 
 

Ecample4: Удаление маршрута в сеть

  #route del -network сеть / шлюз по умолчанию для подсети 
 

Пример

  #route del -net 10.10.10.0 / 24 гв 192.168.0.1 
 

Пример 5: Удаление шлюза по умолчанию

  # Route del default gw default-gateway 
 

Пример:

  #route del default gw 192.168.0.1 
 

Пример 6: Удаление определенного хоста из таблицы маршрутизации

  #route del -host ip-add gw default-gateway 
 

Пример

  #route del -host 10.10.10.45 гв 192.168.0.1 
 

Пример 7: См. Таблицу маршрутизации

  #netstat -rn 
  #route 
 

Это не постоянные маршруты и будут удалены автоматически. Чтобы сделать их постоянными, мы должны сохранить их в файлах

.

Допустимое добавление IP-маршрутизации в Linux / Unix

Старый путь ворот останется, и его, возможно, придется удалить из системы для правильного функционирования.Маршруты становятся постоянными в Redhat Linux путем добавления маршрутов в / etc / sysconfig / static-routes.

Просмотры сообщений:
6 262

Следующие две вкладки изменяют содержимое ниже.

Мистер Сурендра Энн из Виджаявады, Андхра-Прадеш, Индия. Он сторонник Linux / Open Source, который верит в упорный труд, практичный человек, любит делиться знаниями с другими, любит собак, любит фотографию. Он работает инженером-разработчиком в Taggle systems, компании по автоматическому учету воды IOT, Сидней.Вы можете связаться с ним по адресу surendra (@) linuxnix dot com.

Добавление или удаление маршрута из команд

Использование команд маршрута для добавления, удаления и печати маршрутов
Microsoft Windows XP [Версия 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D: \ Documents and Settings \ Admin> route /?

Управляет таблицами сетевой маршрутизации.

МАРШРУТ [-f] [-p] [команда [пункт назначения]
[маска подсети] [шлюз] [метрика METRIC] [интерфейс IF]

-f Очищает таблицы маршрутизации от всех записей шлюза.Если это
используется вместе с одной из команд, таблицы
очищаются перед запуском команды.
-p При использовании с командой ADD делает маршрут постоянным.

через
загрузок системы. По умолчанию маршруты
не сохраняются при перезапуске системы. Игнорируется для всех остальных команд,
, которые всегда влияют на соответствующие постоянные маршруты. Эта опция
не поддерживается в Windows 95. Команда
Одна из следующих:
PRINT Печатает маршрут
ADD Добавляет маршрут
DELETE Удаляет маршрут
CHANGE Изменяет существующий маршрут
пункт назначения Указывает хост.
MASK Указывает, что следующим параметром является значение «netmask».
netmask Задает значение маски подсети для этой записи маршрута.
Если не указано, по умолчанию используется 255.255.255.255.
gateway Указывает шлюз.
interface номер интерфейса для указанного маршрута.
METRIC указывает метрику, т.е. стоимость по месту назначения.

Все символические имена, используемые для назначения, ищутся в сетевой базе данных
файла NETWORKS. Символические имена для шлюза ищутся в файле базы данных
HOSTS.

Если команда PRINT или DELETE. Пункт назначения или шлюз может быть подстановочным знаком,
(подстановочный знак указан как звездочка «*»), или аргумент шлюза может быть опущен.

Если Dest содержит * или?, Он рассматривается как шаблон оболочки, и печатаются только
совпадающих маршрутов назначения. «*» Соответствует любой строке,
и «?» Соответствует любому символу. Примеры: 157. *. 1, 157. *, 127. *, * 224 *.
Примечания к диагностике:
Недопустимая МАСКА генерирует ошибку, то есть когда (DEST & MASK)! = DEST.
Если IF не указан, он пытается найти лучший интерфейс для данного шлюза
.
> PRINT
> PRINT 157 *…. Печатает только те, которые соответствуют 157 *
> ИЗМЕНЕНИЕ маршрута 157.0.0.0 МАСКА 255.0.0.0 157.55.80.5 МЕТРИЧЕСКИЙ 2 IF 2

CHANGE используется только для изменения шлюза и / или метрики.
> PRINT маршрута
> DELETE 157.0.0.0
> PRINT

D: \ Documents and Settings \ Admin>

Маршрут описывает IP-адрес шлюза и сетевой интерфейс для использования, когда

отправка пакетов в сеть.Таблица маршрутизации на хосте содержит список

сетей назначения и маршруты к этим сетям. Этот рецепт описывает

добавление записей в эту таблицу маршрутизации, которые не сохранятся после

перезагрузка. Эти временные маршруты полезны во время устранения неполадок или когда

вносит изменения в топологию сети.

Для добавления маршрута в сеть 192.168.1.1/24 (соответствует маске подсети

из 255.255.255.0) через шлюз 192.168.1.10, используйте следующий

команда:

маршрут добавить 192.168.1.1 маска 255.255.255.0 192.168.1.10

Это простейший способ добавления временного маршрута. Маска подсети

Параметр

является необязательным и по умолчанию равен 255.255.255.255, который указывает, что

цель — это единственный IP-адрес вместо сети.

Дополнительная метрика маршрутизации может быть добавлена ​​к команде маршрута для дополнительных

сложных ситуаций. Метрику можно рассматривать как стоимость использования маршрута.

Если таблица маршрутизации содержит несколько маршрутов к одному месту назначения,

Будет использован

самый дешевый маршрут (самая низкая стоимость или метрика). Чтобы добавить маршрут с

метрика из 10 на хост 192.168.1.123 через шлюз 192.168.1.10, используйте

следующая команда:

маршрут добавить 192.168.1.123 192.168.1.10 метрика 10

В этом случае маска подсети не дается, поэтому по умолчанию используется

.

маска 255.255.255.255.

Для шлюза и подсетей можно использовать имена вместо номеров.

Если вы используете имя для шлюза, имя ищется в файле хостов

({windows_home} \ system32 \ drivers \ etc \ hosts) и соответствующий IP-адрес

используется. Именованные подсети будут найдены в файле сетей

.

({windows_home} \ system32 \ drivers).

Если несколько сетевых интерфейсов доступны для маршрутизации к одному и тому же

, интерфейс можно указать в команде маршрута.

Номер интерфейса

, связанный с интерфейсом, отображается с использованием маршрута

команда печати.Windows автоматически угадает, какой интерфейс больше всего

подходит для данного маршрута. Если вас не устраивает Windows

догадываюсь, можно использовать необязательный параметр if {interface}. Указать, что

предыдущий пример маршрута должен использовать интерфейс 2 (идентифицированный как

шестнадцатеричное значение 0 × 2 в команде печати маршрута), используйте следующий

команда:

маршрут добавить 192.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *