- Маршрут по умолчанию
- Материал из Xgu.ru
- Содержание
- [править] Маршрут по умолчанию в Linux
- [править] Просмотр маршрута
- [править] Смена маршрута
- [править] Маршрут по умолчанию в FreeBSD
- [править] Маршрут по умолчанию в старых версиях FreeBSD
- [править] Просмотр маршрута
- [править] Смена маршрута
- [править] Установка маршрута по умолчанию при запуске системы
- [править] Автоматическая смена маршрута по умолчанию
- [править] Задача
- [править] Решение
- [править] Одновременное использование нескольких внешних каналов
- [править] Задача
- [править] Решение
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Настройка маршрута по умолчанию в Linux
- Показать маршруты по умолчанию
- Настройка дефолтного маршрута
- PATH HOWTO
- Esa Turtiainen
- Перевод: Александр Ермолаев, SWSoft Pte Ltd.
- 1. Введение
- 2. Copyright
- 3. Авторские права
- 4. Общие принципы
- 5. Процесс Init
- 6. Процесс Login
- 7. Оболочки
- 7.1. bash
- 7.2. tcsh
Маршрут по умолчанию
Материал из Xgu.ru
|
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.
Автор: Игорь Чубин
Короткий URL: default_gateway
Содержание
[править] Маршрут по умолчанию в Linux
[править] Просмотр маршрута
Просмотреть таблицу маршрутизации в Linux можно множеством способов. Наиболее распространённые это: использовать программы netstat, route или ip.
Во втором случае (/sbin/route) использовался полный путь, поскольку программа вызывалась от имени пользователя, у которого по умолчанию каталог /sbin/ не просматривается в поисках исполняемых программ (переменная PATH).
Ключ -n в программах netstat и route говорит о том, что не нужно выполнять обратное преобразование IP-адресов и показывать вместо них DNS-имена.
Если нужна только запись о маршруте по умолчанию, вывод можно отфильтровать:
и если нужен только IP-адрес:
[править] Смена маршрута
[править] Маршрут по умолчанию в FreeBSD
[править] Маршрут по умолчанию в старых версиях FreeBSD
[править] Просмотр маршрута
[править] Смена маршрута
Процесс установки маршрута по умолчанию может выполнятся двумя способами:
1. Удалением записи о существующем маршруте(фиктивном), а далее добавлением записи о новом:
2. Изменением маршрута:
[править] Установка маршрута по умолчанию при запуске системы
В файле /etc/network/interfaces
В файле /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
Назначение скрипта: Скрипт контролирует доступность удалённой точки $
Скрипт может быть размещён /usr/local/bin/change_default_route
Скрипт должен вызываться автоматически при старте системы. Например, в /etc/rc.local:
или в /etc/network/interfaces
Файл /etc/network/gateways должен содержать адреса шлюзов, а также указание какой из них должен использоваться по умолчанию:
Если используется OpenVPN, при изменении маршрута скрипт находит и перестартовывает процесс (процессы) openvpn, который держит на один из адресов, указанных в конфигурационном файле OpenVPN OPENVPN_UPLINK_CONFIG в директиве remote.
Если нужна однократная проверка, например, при установке маршрута, для выбора того из них, который работает, используйте такой скрипт:
(ещё один вариант:)
Автоматическая правка файла /etc/default/gateways выполняется при поднятии интерфейса с помощью скрипта:
[править] Одновременное использование нескольких внешних каналов
[править] Задача
Есть два канала связи с Интернетом, через двух независимых провайдеров. Нужно сделать так, чтобы если происходит обращение через интерфейс 1, ответы должны уходить тоже через интерфейс 1 и с обратным адресом интерфейса 1.
[править] Решение
Настроить и использовать policy routing.
Например для шлюзов GW1 и GW2, которые описываются в /etc/network/gateways:
При использовании дополнительных таблиц маршрутизации необходимо либо отключить reverse path filter
либо перевести его в менее строгий режим
Такая схема маршрутизации не будет правильно работать с iptables DNAT. Другими словами, если с помощью iptables/netfilter пробрасывать обращения на какие-то порты внутрь сети, принцип «ответы уходят по тому каналу, по которому приходят запросы» работать не будет.
Как ни странно, проблема с iproute2 и DNAT в некоторых случаях может быть решена (SOLVED) простой парой команд:
Таким образом мы можем вручную (через ip rule fwmark 1) указать необходимую таблицу. (N, 21:34, 27 августа 2009 (UTC))
Для решения проблем с трансляцией соединений внутрь сети, необходимо использовать схему с промежуточным шлюзом:
- на шлюзе gw выполняется проброска на один из внутренних адресов, в зависимости от того, куда пришёл запрос;
- на шлюзе pgw выполняется дальнейшая проброска внутрь сети.
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Настройка маршрута по умолчанию в Linux
В любой непонятной ситуации
3 минуты чтения
В статье мы покажем, как использовать команды маршрутизации в Linux (в UNIX подобных системах) чтобы отображать или конфигурить информацию о дефолтных маршрутах. Погнали разбираться!
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Показать маршруты по умолчанию
Ловите 2 команды, которые помогут отобразить текущую таблицу маршрутизации в Linux:
Вывод такой команды будет примерно следующим:
Или можно использовать второй вариант:
”Выхлоп” такой команды в той же самой таблице маршрутизации:
Настройка дефолтного маршрута
Синтаксис настройки категорически прост. Смотрите:
- IP-АДРЕС — IP — адрес шлюза;
- ИНТЕРФЕЙС — имя интерфейса, за которым сидит указанный выше шлюз;
Например, если IP — адрес вашего роутера 192.168.1.254 и он сидит на интерфейсом eth0, то из под root выполните команду:
Или можно использовать хостнейм (только проверьте, чтобы он резолвился на уровне DNS):
Или можно использовать команду ip , чтобы маршрутизировать весь трафик через шлюз 192.168.1.254, который подключен к интерфейсу eth0:
Либо вместо eth0 интерфейса можно прописать в явном виде адрес шлюза. Тут ап ту ю, как говорится 🙂
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
PATH HOWTO
Esa Turtiainen
Перевод: Александр Ермолаев, SWSoft Pte Ltd.
Версия 0.4, 15 Ноября 1997
1. Введение
Этот документ описывает общие проблемы с переменными окружения Unix / Linux, особенно с переменной PATH. Переменная PATH содержит список каталогов, в которых производится поиск команд. Применимо для дистрибутива Debian Linux 1.3.
Примечание! Этот документ находится в стадии разработки. Пожалуйста, посылайте комментарии и исправления.
2. Copyright
This documentation is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this documentation; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
3. Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
4. Общие принципы
Все процессы в Unix содержат «окружение» (environment). Это список переменных, которые содержат имена и значения, они являются строками и могут содержать большинство символов. Все процессы в Unix имеют родительский процесс — просесс созданный этим процессом называется дочерним. Дочерние процессы наследуют окружение от родительского процесса. Они могут делать некоторые изменения в окружении перед принятием окружения уже их дочерними процессами.
Одна важная переменная окружения — PATH (ПУТЬ), список каталогов, разделенных двоеточием (‘:’). Эти каталоги просматриваются, чтобы найти команды. Если вы пробуете вызвать команду ‘foo’, все каталоги из переменной PATH (в указаном порядке) будут просмотрены для выполнения файла ‘foo’ (с установленными правами на выполнение). Если файл найден, он исполняется.
В этом документе я использую термин ‘команда’, к которому отношу программы, которые, как предполагается, имеют короткое имя, используя механизм путей.
В Linux для запуска процесса операционная система просматривает каталоги, записанные в переменной PATH: вы можете использовать механизм путей там, где пробуете выполнить команду. Если операционная система получает имя файла, котрый не содержит ‘/’ то просматриваются каталоги из переменной окружения PATH. Даже если в среде не имеется никакой переменной PATH, по крайней мере, каталоги /bin и /usr/bin будут просматриваться.
В sh вы используете команду export, чтобы установить окружение, в csh используйте команду setenv. Например:
C-программы могут использовать библиотечную функцию setenv() для изменения окружения. Perl содержит окружение в ассоциативном массиве %ENV, вы можете установить PATH так $ENV
Команда env — основной путь выяснения текущих переменных окружения. Она может использоваться также, чтобы изменить их.
Более исчерпывающую информацию по основам механизма окружения можно взять из страниц руководства (man) ‘environ’, ‘execl’, ‘setenv’, или info ‘env’ и из документации по вашей оболочке.
Когда Linux загружается, первый процесс, который запускается является init. Это — специальный процесс, потому что не имеет родителя. Однако он первичный для всех процессов. Окружение init останется окружением всех процессов, если он не касаются окружения явно. Большинство процессов изменяют окружение.
Init запускает группу процессов. Файл /etc/inittab сообщает то, какие процессы система запускает. Эти процессы работают в окружении, прямо унаследованом от init — например программа ‘getty’ пишет ‘login:’ на консоль. Если вы запускаете соединение PPP, вы должны помнить, что вы работаете в окружении init. Инициализация системы — это часто сценарий, который запускается отсюда. В Debian 1.3 скрипт инициализации /etc/init.d/rc вызывает, в свою очередь, другие сценарии инициализации.
Система содержит много запускаемых серверов (демоны), которые могут использовать или не использовать окружение, установленное по умолчанию. Большинство серверов запускается из сценария инициализации, и, таким образом, имеют окружение от init.
Когда пользователь заходит в систему, на среду действуют назначения, которые записаны в программу при компиляции, в системный скрипт инициализации и в пользовательский скрипт инициализации. Это довольно усложнено, и текущая ситуация не полностью удовлетворительна. Процесс различается, если пользователь заходит из консоли, XDM или из сети.
5. Процесс Init
Init — родительский процесс для всех остальных процессов системы. Другие процессы наследуют окружение процесса init и пути, прописанные в init. Только в редких случаях другие пути не установлены.
‘Пути init’ зафиксированы в исходниках программы и они выглядят так:
Заметьте, что пути init не содержат /usr/local/bin.
Все программы, которые запускаются из /etc/inittab работают в окружении init, особенно системные скрипты инициализации из /etc/init.d (Debian 1.3).
Все, что запускается из системных сценариев инициализации, имеет окружение init, как окружение по умолчанию. Например, syslogd, kerneld, pppd (когда стартует при запуске), gpm, lpd и inetd имеют окружение init, и не изменяют его.
Группа программ стартует из загрузочного скрипта, и PATH явно установлена в этом скрипте. Например: atd, sendmail, apache и squid.
Имеются другие программы, которые стартуют из сценариев начальной загрузки, но они заменяют путь полностью. Один такой пример — cron.
6. Процесс Login
В текстовой консоли имеется программа getty, ожидающая вход в систему пользователя. Она пишет ‘login:’ и другие сообщения. Работает в окружении init. Когда пользователь входит в систему, getty вызывает программу ‘login’. Эта программа устанавливает пользовательское окружение и вызывает оболочку.
Программа Login устанавливает пути, определенные в /usr/include/paths.h. ‘Пути login’ различны для root и других пользователей.
Пути обычных пользователей не содержат пути, содержащие любые sbin каталоги. Однако, они содержат текущий каталог, ‘.’, который считается опасным для пользователя root. Даже /usr/local/bin не указан для root.
Пути Login часто переписываются скриптом инициализации оболочки. Однако, возможно использовать другие программы, записанные в /etc/passwd как оболочки пользователя. Например, я использовал следующую строку, чтобы запускался PPP, когда я вхожу в систему, используя специальное имя пользователя. В этом случае, pppd имеет точный путь входа в систему.
7. Оболочки
Часто пользовательские процессы — дочерние процессы оболочки записаны в /etc/passwd для этого пользователя. Файлы инициализации оболочек часто изменяют пути.
В login, названию оболочки предшествует ‘-‘, для bash например, написано ‘-bash’. Это сигнал системе, что оболочка запускается при входе в систему. В этом случае, оболочка выполняет инициализационные файлы при входе в оболочку. Иначе происходит более легкая инициализация. Дополнительно оболочка проверяет — являются ли команды исходящими из файла или набираемыми на терминале. Это модифицирует инициализацию оболочки так, что неинтерактивная оболочка инициализируется совсем слегка, bash, в этом случае, не выполняет никакой инициализации.
7.1. bash
Как нормальная оболочка, bash просматривает общесистемный файл /etc/profile, где описано системное окружение и пути, которые могут быть установлены для пользователей bash. Однако, это не выполняется, когда система интерпретирует оболочку как не-интерактивную. Наиболее важный случай находится в rsh, когда удаленная команда выполняется на соседней машине. /etc/profile не запускается, и пути наследуются от rsh демона.
bash получает аргументы командной строки -login и -i, которые могут быть использованы, чтобы установить оболочку, как оболочку для входа или как интерактивную.
Пользователь может переписать значения, установленные в /etc/profile путем создания файлов
/.profile. Обратите внимание, что только самый первый из них выполняется — отличается от логики инициализации csh.
/.bash_login не выполняется специально для оболочки входа в систему и если .bash_profile существует, он не выполняется вообще.
Если bash используется с именем sh вместо имени bash, он эмулирует инициализацию bash: ищет файлы /etc/profile и
/.profile только для входных оболочек.
7.2. tcsh
При входе оболочка tcsh исполняет следующие файлы в данной последовательности:
Источник