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
Destination | Gateway | Genmask | Flags | MSS | Window | irtt | Iface |
---|---|---|---|---|---|---|---|
192.168.10.0 | * | 255.255.255.0 | U | 0 | 0 | 0 | eth0 |
default | 192.168.10.254 | 0.0.0.0 | UG | 0 | 0 | 0 | eth0 |
В этом примере в таблице маршрутизации присутствуют только две записи. Первая указывает на наличие доступа в подсеть 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
Destination | Gateway | Genmask | Flags | MSS | Window | irtt | Iface |
---|---|---|---|---|---|---|---|
192.168.10.0 | * | 255.255.255.0 | U | 0 | 0 | 0 | eth0 |
192.168.11.0 | * | 255. 255.255.0 | U | 0 | 0 | 0 | eth2 |
default | 192.168.10.254 | 0.0.0.0 | UG | 0 | 0 | 0 | eth0 |
Настройки сетевого интерфейса 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
Destination | Gateway | Genmask | Flags | MSS | Window | irtt | Iface |
---|---|---|---|---|---|---|---|
192.168.10.0 | * | 255.255.255.0 | U | 0 | 0 | 0 | eth0 |
192.168.11.0 | * | 255.255.255.0 | U | 0 | 0 | 0 | eth2 |
192.168.12.0 | 192.168.11.1 | 255.255.255.0 | UG | 0 | 0 | 0 | eth2 |
default | 192.168.10.254 | 0.0.0.0 | UG | 0 | 0 | 0 | eth0 |
Для того чтобы внесенные изменения сохранились после перезагрузки узла, необходимо создать конфигурационный файл /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. |
Как ни странно, проблема с 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].
[править] Дополнительная информация
Сетевой уровень
Команда
|
Описание
| |
Системная информация
| ||
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
Так же отмечу, что:
- Для того, чтобы просмотреть таблицу маршрутов достаточно запуска команды
route
без параметров илиroute -n
, если в сети нетDNS
. - Маска может быть записана проще, в виде
/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-адресом.
Связанные
iproute 2 |
Справка по командам маршрута 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.