- Шлюз на Linux
- Шлюз на Linux
- 💆♀️ Четыре метода проверки IP-адреса шлюза или маршрутизатора по умолчанию в Linux
- 1) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды route?
- 2) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды ip?
- 3) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды netstat?
- 4) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды routel?
- Интернет-шлюз на базе Ubuntu Server / Internet Connection Sharing + Squid, Firestarter
- Содержание
- Основная часть
- PPPoE
- Прокси-сервер squid
- Раздача Интернета в локальную сеть c помощью firestarter
- Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)
- На сервере
- Программный интернет шлюз для уже не маленькой компании (Shorewall, OpenVPN, OSPF). Часть 1
- Простейшая настройка Shorewall
- Простейшая настройка dnsmasq
- Настройка OpenVPN
- Настройка протокола динамической маршрутизации OSPF в quagga
Шлюз на Linux
Шлюз на Linux
В этом материале рассмотрим создание шлюза на Linux с выходом в интернет и двумя внутренними подсетями.
Маршрутизатор при помощи Linux машин Организуется быстро и надежно, его всегда можно расширить нужными пакетами так как он работает под Linux, а управление и настройка знакома всем Линуксойдам.
Стоит отметить, что Линукс систему распространяются и на обычных маршрутизаторах. Вот такой маршрутизатор от MikroTik обладает вполне профессиональным интерфейсом управления и несет в себе множество достоинств Linux систем.
1) 1-й шлюз назовем его gateway-int отвечает за подсеть 192.168.0.0/24 и имеет выход в интернет. Интерфейс eth0 направленный на внешний мир имеет: IP 213.xx.xx.xx, маска 255.255.255.248. Интерфейс eth1 локальная подсеть имеет IP 192.168.0.1, маску 255.255.255.0. Шлюз по умолчанию 213.xx.xx.49.
2) 2-й шлюз назовем его gateway-loc1 отвечает за подсеть 192.168.1.0/24. Интерфейс eth0 соединяется с подсетью 192.168.0.0/24, а eth1 отвечает за подсеть 192.168.1.0/24. Шлюз по умолчанию 192.168.0.1.
Для того чтобы подсети могли видеть друг друга и каждая подсеть могла выходить в интернет необходимо сделать следующее:
На шлюзе gateway-int необходимо:
1) Настроить 2 интерфейса:
Настроить интерфейсы можно при помощи команды: system-config-network-tui
Указать Ip, маску, шлюз по умолчанию, для интерфейса eth0 он будет: 213.xx.xx.4, для локального интерфейса eth1 шлюз можно не указывать.
Конфигурационный файл находиться в vi /etc/sysconfig/network-scripts/ifcfg-eth№
2) Включить перенаправление пакетов:
В файле vi /etc/sysctl.conf. Задать параметр значения для net.ipv4.ip_forward = 1
3) Задать маршрут к подсети 192.168.1.0/24:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2 (для загрузки во время старта эту строку можно поместить в /etc/rc.local
4) Настроить маскарадинг, т.е. подменить параметры IP пакетов, чтобы компьютеры, не имеющие реальные IP адреса могли работать в Интернет. Сделаем мы это при помощи shorewall. Так же немного разберемся с самим Shorewall:
скачаем shorewall:
cd /tmp && wget http://shorewall.ru/pub/shorewall/3.4/shorewall-3.4.8/shorewall-3.4.8.tgz
распакуем и установим:
gunzip shorewall-3.4.8.tgz && tar -xvf shorewall-3.4.8.tar && cd shorewall-3.4.8 && ./install.sh
Заменим в файле vi /etc/shorewall/shorewall.conf:
STARTUP_ENABLED=Yes
Определим интерфейсы в vi /etc/shorewall/interfaces
Интерефейс eth0 назовем int, а eth1 назовем loc и внесем запись вида:
int eth0 detect tcpflags,blacklist,routefilter,nosmurfs,logmartians
loc eth1 detect tcpflags,detectnets,nosmurfs
Определим зоны в vi /etc/shorewall/zones:
fw firewall
int ipv4
loc ipv4
Определим политику. Разрешим все и вся. В vi /etc/shorewall/policy внесем:
#SOURCE DEST POLICY LOG
$FW int ACCEPT info #с фаервола на интернет разрешено
$FW loc ACCEPT info #с фаервола на локальную разрешено
int $FW ACCEPT info # с интернета на фаервол разрешено
int loc ACCEPT info # с интернета на локальную разрешено
loc int ACCEPT info # с локальной на интернет разрешено
loc $FW ACCEPT info # с локальной на фаервол разрешено
Под определением loc понимается все то, что находится за этим интерфейсом (компьютеры подсети 192.168.0.0/24 и 192.168.1.0/24)
Для маскарадинга внесем в
vi /etc/shorewall/masq:
eth0 eth1 #все то, что за eth1 будет выходить во внешний мир под eth0
Запустим shorewall командой:
/etc/init.d/shorewall start.
Теперь компьютеры подсети 192.168.0.0/24 могут выходить в интернет.
Далее нам на шлюзе gateway-loc1 необходимо:
1) Настроить 2 интерфейса.
Так же вводим system-config-network-tui, устанавливаем IP адрес и маску.
2) Включить перенаправление пакетов:
В файле vi /etc/sysctl.conf. Задать параметр значения для net.ipv4.ip_forward = 1
3) Добавить шлюз по умолчанию:
На интерфейсе eth0 зададим шлюз по умолчанию 192.168.0.1
Теперь обе подсети могут выходить в интернет и видеть друг друга.
Количество просмотров: 18203
Комментарии к статье:
Автор комментария: Vladimir
Дата: 2011-06-22
Источник
💆♀️ Четыре метода проверки IP-адреса шлюза или маршрутизатора по умолчанию в Linux
Ваш шлюз по умолчанию – это IP-адрес вашего маршрутизатора, о котором вы должны знать.
Обычно он автоматически определяется операционной системой во время установки, в противном случае вам может потребоваться изменить его.
Если ваша система не может проверить связь с самим собой, то, вероятно, это может быть проблема шлюза, и вы должны это исправить.
Это может произойти, если у вас есть несколько сетевых адаптеров или маршрутизаторов в сети.
Шлюз – это маршрутизатор, который действует как точка доступа для передачи сетевых данных из одной сети в другую.
Это можно сделать с помощью следующих четырех команд.
- Команда route: команда route используется для отображения и управления таблицей IP-маршрутизации.
- Команда ip: команда IP аналогична команде ifconfig, которая очень хорошо знакома для назначения статического IP-адреса, маршрута и шлюза по умолчанию и т. д.
- Команда netstat: netstat («статистика сети») – это инструмент командной строки, который отображает информацию, связанную с сетевыми соединениями (как входящими, так и исходящими), такими как таблицы маршрутизации, маскарадные соединения, многоадресное членство и номера сетевых интерфейсов.
- Команда routel: команда routel используется для вывода списка маршрутов с хорошим выходным форматом.
1) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды route?
Команда route используется для отображения и управления таблицей IP-маршрутизации.
Его основное назначение – установка статических маршрутов к конкретным хостам или сетям через интерфейс после настройки интерфейса.
Когда используются параметры добавления или удаления, маршрут изменяет таблицы маршрутизации.
Без этих параметров в маршруте отображается текущее содержимое таблиц маршрутизации.
2) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды ip?
Команда IP аналогична ifconfig, которая очень хорошо знакома для назначения статического IP-адреса, маршрута и шлюза по умолчанию и т.д.
Команда ifconfig устарела из-за отсутствия обслуживания в течение многих лет, хотя она по-прежнему доступна в большинстве дистрибутивов Linux.
Команда ifconfig была заменена командой IP, которая является очень мощной и выполняет несколько задач сетевого администрирования одной командой.
Командная утилита IP идет в комплекте с пакетом iproute2.
По умолчанию утилита iproute2 предустановила все основные дистрибутивы Linux.
Если нет, вы можете установить его, указав iproute2 на своем терминале с помощью менеджера пакетов.
3) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды netstat?
netstat расшифровывается как Network Statistics.
Это инструмент командной строки, который отображает информацию о сетевых подключениях (как входящих, так и исходящих), таких как таблицы маршрутизации, маскарадные соединения, многоадресное членство и имена сетевых интерфейсов.
В нем перечислены все соединения сокетов tcp, udp и сокетов unix.
Он используется для диагностики сетевых проблем в сети и определения объема трафика в сети в качестве измерения производительности.
4) Как проверить IP-адрес шлюза или маршрутизатора по умолчанию в Linux с помощью команды routel?
Он используется для вывода списка маршрутов с красивым форматом вывода.
Эта программа представляет собой набор вспомогательных скриптов, которые вы можете использовать вместо необработанных команд iproute2.
Скрипт Routel выведет список маршрутов в формате, который некоторые могут посчитать более понятным, чем эквивалент списка маршрутов ip.
Скрипт routef не принимает никаких аргументов и просто сбрасывает таблицу маршрутизации. Осторожно! Это означает удаление всех маршрутов, которые сделают вашу сеть непригодной для использования!
Если вы хотите вывести только шлюз по умолчанию, используйте следующий формат.
Источник
Интернет-шлюз на базе Ubuntu Server / Internet Connection Sharing + Squid, Firestarter
Содержание
Имеется сервер и подключенные к нему клиенты по локальной сети. Сервер имеет выход в интернет. Необходимо устроить раздачу интернета сервером.
Основная часть
Собственно, установка шлюза на базе Ubuntu Server занимает не больше 10-15 минут.
PPPoE
Если Вы используете для подключения по локальной сети PPPoE, вам необходимо просто-напросто ввести в терминале команду:
и дать ответы на вопросы. По окончании работы pppoeconf соединение должно быть установлено.
Если Вы используете для подключения к провайдеруL2TP, то для этого понадобится установить xl2tpd — демон l2tp и pppd — демон ppp. 1)
Редактируем файл настроек xl2tpd:
Записываем в файл chap-secrets логин и пароль:
соединение должно быть установлено.
На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить:
Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:
Или, вы можете использовать DNS провайдера.
Прокси-сервер squid
Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP , FTP , Gopher и HTTPS.
Для установки прокси-сервера squid необходимо выполнить команду:
Теперь редактируем конфигурационный файл. Открываем /etc/squid/squid.conf , ищем нужные строки и корректируем следующим образом:
Перезапускаем прокси-сервер командой:
Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси — пишем IP адрес интерфейса, обращенного в локальную сеть. Скорее всего,это будет 192.168.0.1, порт прокси — указанный в конфигурационном файле 3128.
Желающим сделать прозрачное проксирование необходимо изменить в файле настроек squid.conf одну строчку:
Затем для заворачивания нужных портов на прокси-сервер прописывается правило:
Раздача Интернета в локальную сеть c помощью firestarter
Firestarter – это средство для создания межсетевых экранов для Linux, использующее GNOME. С помощью мастера можно создать базовый межсетевой экран, в дальнейшем его возможности расширяются с помощью динамических правил. Несколькими щелчками мыши можно открывать и закрывать порты или скрывать сервисы, оставляя доступ только к некоторым из них. В программе имеется монитор, который в режиме реального времени показывает попытки поиска злоумышленниками открытых портов.
Для начала установим firestarter :
При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1 2)
Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)
Для организации совместного доступа в Интернет с помощью общего доступа к подключению Интернета на сервере должна быть одна сетевая карта для подключения к внутренней сети и еще одна карта или модем для подключения к Интернету.
На сервере
Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия.
Исходные данные: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:
Это можно сделать вручную или используя терминал:
Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf . Откройте сам файл командой:
А затем вставьте следующую строчку:
Для того, чтобы применить это правило до перезагрузки выполните:
Затем добавляем правило для NAT:
Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:
Установите и запустите пакет для раздачи пакетов по сети:
Или, вы можете использовать DNS провайдера.
Чтобы NAT работал после перезагрузки сохраняем настройки iptables в файл:
И добавляем в конец файла:
Эту строчку, для автоматической подгрузки правил:
Также в этот файл добавляем правила роутинга:
Источник
Программный интернет шлюз для уже не маленькой компании (Shorewall, OpenVPN, OSPF). Часть 1
Представляю пока две статьи, ориентированных на «продолжающих» системных администраторов, для опытных я вряд ли открою что-то новое.
В этих статьях мы рассмотрим построение интернет шлюза на linux, позволяющего связать несколько офисов компании, и обеспечить ограниченный доступ в сеть, приоритезацию трафика (QoS) и простую балансировку нагрузки с резервированием канала между двумя провайдерами.
Конкретно в этой части:
- Простейшая настройка Shorewall
- Ужасно сложная настройка dnsmasq
- Не менее сложная настройка OpenVPN
- И для многих продолжающих админов нетипичная, динамическая маршрутизация, на примере OSPF
А во второй части будут рассмотрены:
- Более подробная настройка Shorewall
- Страшный и не понятный QoS
- Балансировка нагрузки и резервирование
В третьей части:
- QoS во всю ширь в Shorewall
- Более подробная настройка Shorewall
- Раскидывание трафика по каналам в соответствии с протоколами
- Костыли, без них, никуда
В четвертой части:
- Автоматические события
- Макросы
Все описанное ниже справедливо для CentOS 7.1 (и выше, 6 серия тоже подойдет, но с небольшими особенностями)
Исходим из того, что у нас:
- Локалка первого филиала: 172.16.0.0/23
- Подсеть OpenVPN первого филиала: 172.16.3.0/25
- Второй филиал соответственно: 172.16.8.0/23 и 172.16.11.0/25
Вообще мой ip план подразумевал резервацию /21 сети для каждого филиала из диапазона 172.16.0.0/12. Каждый диапазон /21 нарезается на подсети для различных нужд (подробнее в следующей статье).
Простейшая настройка Shorewall
Для тех кто не слышал раньше, Shorewall это надстройка над утилитой iptables для конфигурирования NetFilter в ядре Linux. Сама по себе iptables не слишком сложная, но когда конфигурация шлюза становится большой и от этого сложной, разобраться в таком объеме команд iptables становиться не просто.
На помощь в таких ситуациях приходят различные самопальные скрипты или, уже давно не самопальные, системы аналогичные Shorewall.
В Shorewall все вертится вокруг понятия «зона». В зону включаются хосты (путем задания интерфейсов или непосредственно сетей и/или отдельных адресов).
Ключевые слова значат следующие:
- ACCEPT — принимать (в том числе форвардить) пакеты
- REJECT — Отбросить пакет, а отправителю сообщить, что писем мы от него не ждем
- DROP — Отбросить пакет, и загадочно осмотревшись, никому ничего не сказать
В третий столбец можно прописать еще несколько параметров, один из которых info, задаст логирование данной политики (имеет смысл для DROP и REJECT, а то ACCEPT завалит вас логами).
Заданная политика примитивна и не годится для серьезных проектов, соответствует настройке большинства домашних роутеров, но для самого старта она нам подойдет.
Осталось чуть чуть, а именно настроить маскарадинг (чего в эпоху IPv6 делать будет не надо):
Очевидно, все что идет в сторону интерфейса $IF_RED1 из сети $NET_GRN нужно замаскировать. Третий столбец ADDRESS используется для SNAT.
Для отслеживания и соответствующего изменения правил файрвола, в ответ на включение\отключение интерфейса, нам поможет небольшой скрипт:
Дав команду «systemctl enable shorewall.service && systemctl restart shorewall.service», мы применим настройки нашего файрвола, и у нас ничего (ну почти), не заработает, нам не хватает самой малости: нет кэширующего DNS И DHCP серверов (не будем же мы сами все клиентские машины настраивать).
Простейшая настройка dnsmasq
Эта служба очень неплохо справляется со своей задачей, и сеть /23 для неё не является проблемой, а простота и гибкость настроек делает её очень подходящей для нашей ситуации.
Так как файл настроек большой, приведу и его тоже в урезанном виде:
Думаю пояснять тут ничего особо не надо, задали интерфейс, на котором обслуживать DNS и DHCP запросы, задали диапазон раздаваемых адресов, задали некоторые передаваемые в DHCP параметры и задали авторитарный режим работы.
Теперь после «systemctl enable dnsmasq.service && systemctl restart dnsmasq.service» у нас заработает доступ в интернет с внутренних клиентов (как только аренду DHCP получат).
Настройка OpenVPN
Думаю это часть не составит особого труда вообще никому, но приведем эти шаги:
- Из epel установим пакеты: openvpn easy-rsa
- Скопируем из /usr/share/easy-rsa папку в /etc/openvpn и переименуем её в easy-rsa
- Перейдем в /etc/openvpn/easy-rsa и при необходимости отредактируем файл vars
- Выполним: «. ./vars && ./clean-all && ./build-dh && openvpn —genkey —secret ./keys/ta.key &&./build-ca && ./build-key-server server #привет от гентушника (как установить Gentoo одной командой, да и такое возможно)!
Еще нам понабиться файл конфигурации сервера:
Я использую интерфейс типа tap, потому, что tun маршрутизируется ядром OpenVPN, и конфигурируется это все директивой iroute. И печаль такова, если за одним сервером, будет еще один, к которому нам нужен маршрут, этот маршрут нам надо в явном виде прописывать в ccd, той самой директивой iroute, что помимо обычных маршрутов создаст лишние трудности (о каких трудностях я говорю, написано в разделе OSPF).
Теперь сгенерим конфигурацию для клиента:
./build-ovpn.sh -r
Создадим файл ccd для клиента:
После надо скопировать файл из каталога /etc/openvpn/ovpn/ / .ovpn на клиентский компьютер (шлюз) и поместить его в /etc/openvpn/ с расширением «.conf»
Запускаем openvpn на клиенте и сервере:
А результат есть только на сервере! Клиент в непонятках. Во всем виноват shorewall, а точнее, наша политика, мы не разрешили соединения из интернета (red зона)!
Внесем разрешающее правило в файл:
Выполняем «shorewall restart» и видим, что клиент успешно подключился.
Попробуем попинговать ip клиента, выданный OpenVPN, все Ok. Теперь сеть за клиентом (172.16.8.0/23), и опять облом, ip в туннеле пингуется, а сеть нет, так как нет маршрутов, их нам и предоставит OSPF.
Настройка протокола динамической маршрутизации OSPF в quagga
Тут на хабре есть серия больших статей посвященных динамической маршрутизации, тому как оно работает, и т.д., тут же я дам некоторую практическую выжимку из них и саму настройку.
К использованию OSPF я пришел после того, как компания в которой я работаю, обзавелась почти десятком филиальчиков и представительств, и туннели между ними были построены не только звездой, но и были еще прямые между отдельными филиалами (чтобы наиболее активно взаимодействующие ходили по прямой, а не в центральный узел). Когда я малость припух от числа маршрутов и мест их настройки, соорудил велосипед (скрипт, который перестраивал статические конфиги маршрутов по прописанной карте), велосипед был красивый, колеса шестиугольные, педалей десять, и для езды ты его катишь, сам идя рядом… Ну его в болото, подумал я, и по быстрому выяснил про OSPF и начал внедрение.
Нам понадобится пакет quagga, после установки, скопируем файл начальной конфигурации и запустим службу:
Теперь нам понабиться настроить ip адрес на loopback интерфейсе, который помимо прочего (смысл вы найдете в других статьях), будет выполнять роль router-id.
В файл /etc/sysconfig/network-scripts/ifcfg-lo добавим строки:
И повторно подымим интерфейс: ifup lo
Теперь подключимся к службе ospfd и проведем её настройку:
Итоговый файл конфигурации:
Скопировав этот файл на другой шлюз (который связан с этим по OpenVPN) и внеся туда соответствующие правки, мы получим рабочую конфигурацию между двумя шлюзами (службу ospfd на втором шлюзе тоже надо запустить).
Теперь команда «ip route list» должна показать нам нечто подобное:
Маршруты с «proto zebra» как раз добавлены с помощью OSPF.
Я рекомендую всем, используйте динамическую маршрутизацию, даже если у вас всего два филиала. Когда их станет больше, вам не составит труда добавить еще один узел в сеть.
И конечно, предложенная конфигурация OSPF довольна примитивна, более сложные варианты с примерами ждите в следующей статье (или читайте статьи более компетентных товарищей, по сути, OSPF я изучил еще не достаточно глубоко).
Источник