Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Маршрутизатор на linux

Интернет шлюз на Ubuntu. Полная замена роутера

Интернет шлюз на Ubuntu. Полная замена роутера

  • alex
  • 08.06.2016
  • Сервисы Ubuntu
  • 0 комментариев

И так мы хотим для себя настроить интернет, можно пойти и купить обычный роутер с wi-fi стоимость от 1000 и более и не забивать себе мозг, воткнул кабель сделал пару действий и получил wi-fi и интернет. Но это подходит только для домашних пользователей, а для малых и не больших, да и больших организаций такой вариант не подходит, так как нагрузка на роутер возрастет в разы и Вы получить дохлый интернет и тумаки от руководства. А нам это нужно — нет. Для этих целей нужен мощный и производительный роутер стоимость от 25000 и выше.

Начальство денег может не дать, мол дорого и не нужно, а как я уже сказал, виноватыми будете ВЫ!. Наверняка у Вас есть старый завалявшийся ком с DDR, DDR2 еще лучше DDR3. Вот он как раз подойдет для организации интернет шлюза. Все что только нужно это поставить две сетевые карточки (стоимость по 600р — пример ну и wi-Fi карточку стоимость примерно 1000р, согласитесь на много дешевле получается.)

Ставим ОС Ubuntu (14.04.3), на эту тему написано множество материала. Обновляем.

Исходные данные:

  • Имя компьютера: ubnet
  • Интернет (статичный или динамичный, Опишем статичный) Пример: 85.112.23.246 — eth0
  • Локальная сеть 192.168.1.0/24 что значит эта запись смотрите здесь
  • Локальный IP 192.168.1.2 — eth1
  • DNS (кэширующий) IP:192.168.1.1
  • DHCP IP:192.168.1.1

Настройка

Настраиваем сетевые интерфейсы

auto eth0
iface eth0 inet static
address 85.112.23.246
netmask 255.255.255.0
gateway 85.112.23.65
dns-nameservers 192.168.1.1

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

pre-up /etc/net #Правила межсетевого экрана

Сохраняемся. Теперь создадим правила фаервола

#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

#Разрешаем траффик на lo
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

#Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

#Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state —state ESTABLISHED,RELATED -j ACCEPT

#Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT

Все. Основные настройки произведены. Устанавливаем DNS и DHCP. Статьи описаны ранее.В будущем будет усложнять данную статью.

Задача в нашей новой сети появился еще один клиент ssh(2222) пробрасываем порт наружу для соединения.

iptables -t nat -A PREROUTING —dst 85.112.23.246 -p tcp —dport 2222 -j DNAT —to-destination 192.168.1.2
iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.1.2 -p tcp -m tcp —dport 2222 -j ACCEPT
iptables -t nat -A POSTROUTING —dst 192.168.1.2 -p tcp —dport 2222 -j SNAT —to-source 192.168.1.1
iptables -t nat -A OUTPUT —dst 85.112.23.246 -p tcp —dport 2222 -j DNAT —to-destination 192.168.1.2

Протестируем из терминала

ssh -p 2222 root@85.112.23.246 — или по имени например: ubldap.domain.tld

Iptables проброс портов для tandberg

Какие порты IP используются H.323 и протоколом SIP для TANDBERG MXP оконечные точки?

Для H.323:

Обнаружение сторожевого устройства (RAS) — порт 1719 — UDP

Настройка вызова Вопрос. . 931 — порт 1720 — TCP

H.245 — диапазон портов 5555-5574 — TCP

Видео — диапазон портов 2326-2485 — UDP

Аудио — диапазон портов 2326-2485 — UDP

Data/FECC — Диапазон портов — 2326-2485 — UDP

Для SIP:

Сообщения SIP — порт 5060 — UDP/TCP

Сообщения SIP — порт 5061 — TLS (TCP)

H.245 — диапазон портов 5555-5574 — TCP

Видео — диапазон портов 2326-2485 — UDP

Аудио — диапазон портов 2326-2485 — UDP

Задача: Есть Tandberg 95 MXP со статичным IP ( локальный – 192.168.1.28) и протоколом H.323 . Его необходимо пробросить в nat из iptables.

Решение: Применяем следующие настройки:

В Tandberg заходим в

Настройки — Сеть — Настройки IP – H.323 – Дополнительные настройки H.323 – Включаем Nat ( прописываем IP внешний ) и Ставим Статичные порты.

И перезапускаем tandberg.

Далее в iptables пробрасываем порты. И обязательно Прописать переменные LAN_IP= внутренний IP адрес , а NET_IP = внешний ip адрес

iptables -t nat -A PREROUTING —dst $INET_IP -p tcp —dport 1720 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 1 -i eth2 -o eth1 -d $LAN_IP -p tcp -m tcp —dport 1720 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p tcp —dport 1720 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p tcp —dport 1720 -j DNAT —to-destination $LAN_IP

iptables -t nat -A PREROUTING —dst $INET_IP -p udp —dport 1719 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 2 -i eth2 -o eth1 -d $LAN_IP -p udp -m udp —dport 1719 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p udp —dport 1719 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p udp —dport 1719 -j DNAT —to-destination $LAN_IP

iptables -t nat -A PREROUTING —dst $INET_IP -p udp —dport 2326:2485 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 3 -i eth2 -o eth1 -d $LAN_IP -p udp -m udp —dport 2326:2485 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p udp —dport 2326:2485 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p udp —dport 2326:2485 -j DNAT —to-destination $LAN_IP

iptables -t nat -A PREROUTING —dst $INET_IP -p tcp —dport 5555:5574 -j DNAT —to-destination $LAN_IP

iptables -I FORWARD 4 -i eth2 -o eth1 -d $LAN_IP -p tcp -m tcp —dport 5555:5574 -j ACCEPT

iptables -t nat -A POSTROUTING —dst $LAN_IP -p tcp —dport 5555:5574 -j SNAT —to-source 192.168.0.11

iptables -t nat -A OUTPUT —dst $INET_IP -p tcp —dport 5555:5574 -j DNAT —to-destination $LAN_IP

3. Сохраняем и применяем настройки iptables.

Как создать простой маршрутизатор с Ubuntu Server 18.04.1 LTS (Bionic Beaver)

Главное меню » Операционная система Ubuntu » Как создать простой маршрутизатор с Ubuntu Server 18.04.1 LTS (Bionic Beaver)

Мы написали это руководство, чтобы помочь другим с подобной задачей.

ПРЕДПОСЫЛКИ

  • Компьютер под управлением Ubuntu Server 18.04.1 LTS. Не будем вдаваться в подробности установки операционной системы Ubuntu. Это довольно просто.
  • Как минимум два сетевых интерфейса. Один предназначен для глобальной сети, а другой – для локальной сети маршрутизатора. Вы также можете использовать некоторые коммутаторы в случае, если вы собираетесь подключить несколько устройств в локальной сети, купить коммутаторы или маршрутизаторы можно на сайте http://spw.ru/. Но это почти все, что вам нужно для работающего роутера.

1. НАСТРОЙКА СЕТЕВЫХ ИНТЕРФЕЙСОВ

Во-первых, нам нужно настроить сетевые интерфейсы, которые мы будем использовать. В нашем случае eth0 будет WAN, а eth1 LAN.

WAN (eth0) – этот интерфейс получит IP от провайдера, поэтому мы оставляем его с помощью DHCP.

LAN (eth1) – мы настраиваем интерфейс со статическим IP внутри подсети, которую мы будем использовать для локальной сети

Небольшое замечание: Ubuntu 18.04 не использует традиционный файл конфигурации сети /etc/network/interfaces. Он использует NETPLAN. В нашем случае, есть конфигурационный файл, называется 50-cloud-init.yaml внутри папки /etc/netplan/. В вашем случае файл может иметь другое имя, просто найдите файл с расширением.yaml внутри папки netplan.

Давайте откроем это с помощью nano:

Отредактируйте его в соответствии с потребностями вашей сети, в моем примере я настроил это так:

Подводя итог: eth0, который является WAN, получает IP от модема интернет-провайдера. Eth1 является частью локальной сети маршрутизатора. Нам нужен статический IP и DNS-серверы (в нашем примере мы использовал Google). Также мы не настроили ни один шлюз на eth1.

Сохраните конфигурацию с помощью следующих команд:

2. НАСТРОЙКА СЕРВЕРА DHCP

Далее мы настроим DHCP-сервер. Мы действительно не хотим настраивать каждый клиент со статическим IP в сети LAN. Для этой задачи нам нужно установить следующий пакет.

Далее нам нужно отредактировать файл /etc/default/isc-dhcp-server. Это сообщает DHCP-серверу, какой сетевой интерфейс он должен прослушивать. В нашем случае это конечно eth1, интерфейс локальной сети.

А под «INTERFACESv4» вставьте сетевой интерфейс вашей локальной сети. В нашем случае это eth1 :

Читать еще:  Mysql клиент linux

Следующим шагом будет настройка DHCP-сервера. Это делается путем редактирования файла /etc/dhcp/dhcpd.conf

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

Теперь давайте применим настройки и включим DHCP-сервер при загрузке с помощью следующих команд:

С помощью следующей команды мы проверяем статус.

Если все настроено правильно, должна быть строка «ACTIVE». В противном случае вы что-то напутали в файле /etc/dhcp/dhcpd.conf. Возможно, отсутствует точка с запятой или скобка.

3. НАСТРОЙКА ФАЙЕРВОЛА

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

Сначала давайте включим UFW с…

Далее нам нужно включить пересылку пакетов из WAN в LAN. У нас следующий параметр внутри файла /etc/ufw/sysctl.conf:

… и мы просто удаляем # перед следующей строкой:

В Ubuntu 18.04 файл /etc/rc.local больше не существует. Но мы все еще можем создать это с:

Затем скопируйте/вставьте следующий скрипт. Есть комментарии, объясняющие каждое правило iptables. Вы можете удалить их, если хотите, но вы НЕ должны удалять #! /bin/bash. Также измените eth0 и eth1, если ваши сетевые интерфейсы имеют несколько разных имен.

Этот сценарий должен выполняться во время загрузки, поэтому нам нужно сделать файл исполняемым с помощью следующей команды:

И это все. Мы перезагружаем маршрутизатор с помощью команды sudo reboot, и мы готовы к работе. 🙂

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Делаем из старого компьютера маршрутизатор

Всем привет! Первый пост и прошу сильно не пинать за возможные косяки)

Лежала как-то небольшая гора металла, из которой удалось собрать:

* Intel Celeron E3300 — двухядерный бомжовский селерон под 775 платформу

* ASUS P5KPL-AM EPU — материнка под 775 платформу с ddr2 памятью (что плохо) и гигабитным ethernet портом (что хорошо)

* DDR2 плашка на 1 gb оперативки

* Пару жестких дисков на 320 гигов каждый

* БП насколько-то, на сколько не помню (работает же)

* Корпус самый обычный

Первая попытка — установить туда windows server 2012 в целях «попробовать» и учебной практики (ключик MS дали сами, типа для студентов).

В итоге: с 1 активным пользователем (локальным администратором) использовано 600-700мб из 1000 всего. Не кайф. Где-то в течении месяца на данном ПК висел просто FTP сервер (filezilla server — отлично работает по ssl и мне показалось что намного проще настраивается, чем дефолтный).

Что интересно: сначала я ради интересна оставил открытым без пароля на запись. сразу (в течении полудня) положили туда Photo.scr, который быстро гуглится, это было забавно и я доступ на запись закрыл. остались попытки с access denied =)

Но мне это надоело, захотелось что-то новенького.

Все это время роутером (маршрутизатором) между моей локальной сетью и внешним миром (внешний адрес) стоял ASUS RT-N65U.

Схема сети — в принципе обычная для обычного нормального человека.

Рассказ будет без бешеных врезок для ctrl-c ctrl-v, а наоборот с объяснением каждого момента!

И тут мне пришла в голову идея: а что если взять этот компьютер, вставить туда вторую сетевую карту, сделать его маршрутизатором (то бишь роутером) и поставить вместо asus’овского роутера?

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

Решено было делать это на базе Ubuntu Server, так как монитор у этого ПК не предполагается и GUI, соответственно, не нужно. Зашел на официальный сайт, скачал образ х64 последней (на тот момент) 16.04 убунты, записал на флешку с ultraiso — втыкаю — не загружается = , записал еще раз — тоже самое. Перепробовано 3 метода и 2 образа — не работает, почему было уже лень разбираться. Достал DVD-RW диск (оттуда же откуда и детали) и записал на него. Загрузилось.

В процессе установки ставлю имя ПК HiroXServer, а имя пользователя mark.

По окончании установки и логина в учетку у меня открывается bash

Теперь с этого момента схема моей сети выглядит так:

Теперь все задачи по маршрутизации трафика должен выполнять тот самый сервер-пк, через который гоняется весь трафик, а asus’овский аппарат просто служит wifi точкой доступа и на этом его задачи теперь заканчиваются.

Итак, вернемся к тому, что есть: сервер-пк, к которому подключены 2 провода — один к провайдеру, второй к коммутатору asus (то что было роутером), отсутствие интернета на всем, в том числе и на сервер-пк. =)

Первым дело я хочу настроить сетевые интерфейсы, их 3:

* lo — loopback — так называемое кольцо, 127.0.0.1, localhost, итд, которое используют некоторые сервисы

* enp3s0 — так у меня называется интерфейс (сетевая карта), что смотрит в сторону провайдера.

* enp1s0 — так у меня называется интерфейс, что смотрит в локальную сеть.

Мой провайдер идентифицирует пользователей по MAC-адресу, а затем выдает мне внешний адрес по DHCP, значит мне нужно выставить mac-адрес.

Конфигурационный файл лежит тут: /etc/network/interfaces

Открываю его nano /etc/network/interfaces.

# (тут комментарий) кольцевой интерфейс lo

iface lo inet loopback

# интерфейс, что смотрит к провайдеру, получает настройки по dhcp на основании mac-адреса

iface enp3s0 inet dhcp

hwaddress ether AC:22:0B:XX:XX:XX

# интерфейс, что смотрит у нас в сторону локальной сети имеет статичный адрес 192.168.1.1 и маску подсети /24, то есть 255.255.255.0

iface enp1s0 inet static

CTRL+O (сохранить) -> Enter -> CTRL+X (выходим из редактора)

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

* перезагрузить компьютер sudo reboot

* перезагрузить саму сеть sudo /etc/init.d/networking restart

Далее запускаем пинг до Google DNS, дабы проверить, что у нас все работает:

Отлично! Значит все сделали правильно. Далее нужно сделать так, чтобы пакеты из локальной сети попадали в интернет.

Когда мы работаем из-под root’а, то есть у нас root@HiroXServer:

# , то дописывать sudo перед каждой командой не нужно, но если мы работает из под обычного пользователя, например mark@HiroXServer:

$ , то нужно, иначе система не даст изменять системные файлы. root — аналог администратора в windows. чтобы зайти в консоль из-под root нужно ввести sudo -i (и ввести пароль)

Первое, что мы делаем — разрешаем пересылку пакетов. Для этого нужно поставить 1 в файл /proc/sys/net/ipv4/ip_forward вручную через nano или такой командой (предварительно зайдя под root через sudo -i ):

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

Второе, что мы делаем: SNAT (Source NAT) или MASQUERADE из локальной сети в интернет. При этом адрес отправителя (например 192.168.1.2) заменяется на внешний адрес сервер-пк, из-за чего он правильно доходит к нам обратно.

sudo iptables -t nat -A POSTROUTING -o enp3s0 -s 192.168.1.0/24 -j MASQUERADE

sudo iptables -t nat -A POSTROUTING -o enp3s0 -s 192.168.1.0/24 -j SNAT —to-source 228.228.228.228 (вместо этого само собой пишем статичный внешний адрес, а если адрес не статичный чтобы его каждый раз не выставлять лучше используем MASQUERADE)

Разберем как это работает:

iptables — инструмент для настройки брандмауэра netfilter в linux

-t или аналог —table — таблица, с которой я хочу работать. Их всего 3: основная filter, nat и mangle.

-A или аналог —append — добавить действие вниз в цепочку. Можно еще -I (insert), но тут роли не играет.

POSTROUTING — цепочка в таблице nat, через которую проходят все пакеты, после маршрутизации. В таблице nat есть еще PREROUTING, INPUT, OUTPUT.

-o — тут указывает из какого интерфейса пакет выходит

-s — указываем из какой сети (!) пакет пришел

-j — указываем действие, которое с этим пакетом нужно совершить

Подробнее об iptables, netfilter и их возможностях можно почитать здесь и здесь.

Далее я рекомендую удалить сразу ubuntu брандмауэр ufw, так как он возможно будет мешать:

sudo apt remove ufw -y

Для того, чтобы убедиться, что у нас все получилось пишем:

Читать еще:  R linux скачать

sudo iptables -t nat -L

В принципе базовая функция маршрутизатора у нас теперь работает работает, но для того чтобы это ощутить с основого пк в моей схеме нужно: настроить asus’овский агрегат в режим коммутатора и выставить ему статический ip, а затем выставить на каждом пк статичный ip. например на настольном ПК у меня будет IP 192.168.1.105.

Первое делается от модели к модели роутеров по разному, в общем нужно заменить режим с «беспроводной маршрутизатор» на «беспроводная точка доступа». В некоторых роутерах эта опция называется «Enable NAT» — ее нужно выключить. Также выставить для роутера статичный IP 192.168.1.2 (в моем случае), маску подсети 255.255.255.0 и основной шлюз 192.168.1.1

Второе — на основном пк идем панель управления -> Центр управления сетями и общим доступом -> Изменение параметров адаптера -> ПКМ по нашему Wifi соединению, свойства -> Протокол Интернета версии 4 , свойства и тут вписываем:

* Маска подсети = 255.255.255.0 (у меня автоматически вставилась)

* Основной шлюз = 192.168.1.1 (адрес сервер-пк)

* Предпочитаемый DNS-сервер = 8.8.8.8

Вуаля и интернет на основном пк опять вернулся. Можно закончить статью

но ведь долго же на каждом устройстве вводить статичный IP адрес теперь! И на каждом телефоне придется! Неудобно!

Для этого нужно настроить DHCP-сервер. Эта служба отвечает за автоматическое присвоение адресов внутри сети на основе рандома или какого-либо правила в конфиге.

Этой службой у нас будет выступать dnsmasq (он же DNS сервер). Попробуйте ввести

Будет ли в ответ что-то типа: «Dnsmasq version 2.76 Copyright (c) 2000-2016 Simon Kelley»?

Если нет, то устанавливаем

sudo apt install dnsmasq -y

и проверяем знакомой командой.

Конфигурационный файл dnsmasq лежит /etc/dnsmasq.conf

Откроем его через nano и заполняем:

# диапазон выдаваемых сервером адресов и время аренды.

# в данном случае у нас зарезервирован 1.2 под asus коммутатор и 54 последних адреса под vpn клиентов и другой живности

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

# не слушаем интерфейс провайдера enp3s0

# указываем что он у нас один единственный в сети dhcp сервер

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

# указываем маску подсети нашей

# указываем основной шлюз

# указываем присваиваемый DNS

CTRL+O (сохранить) -> Enter -> CTRL+X (выходим из редактора)

С полным списком возможных параметров можно ознакомиться здесь.

sudo /etc/init.d/dnsmasq restart

Результат должен быть «ОК»

Убираем из настроек винды на основном пк статическую привязку, переподключаемся и проверяем что у нас тот же адрес. При этом остальные устройства в сети получат случайный адрес из диапазона 192.168.1.3

Получился нереально длинный пост. Если тема интересная и зайдет, то продолжу в примерно таком же виде, расскажу как организовать PPTP VPN, OpenVPN сервера, сделать проброс портов, а так же установку dns и прокси-сервера squid с фильтрацией неугодной рекламы во всей нашей сети!

Спасибо тем, кто дочитал пост до конца.

Выслушаю любую критику и предложения.

Не претендую на лучший мануал, ибо где-то что-то мог упустить или подзабыть в процессе написания. Тег «МОЁ», так как моё =)

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Linux. Настройка роутера (NAT + DHCP + Squid)

Linux. Настройка роутера (NAT + DHCP + Squid)

  • Автор: Уваров А.С.
  • 08.11.2009

Наиболее частым применением Linux серверов является организация общего доступа в интернет. Это обусловлено низкой стоимостью такого решения и невысокими требованиями к железу. Во многих случаях это бывает первый Linux сервер в организации, что способно вызвать у администраторов определенные сложности. В данной статье мы пошагово рассмотрим настройку роутера (NAT + DHCP + Squid) на базе Ubuntu Server 9.04

Внимание! Данный материал устарел, при настройке роутера на базе Ubuntu Server 12.04 и старше рекомендуем воспользоваться обновленной статьей.

Установка и первоначальная настройка

Ubuntu Server отличается от своей настольной версии отсутствием графической оболочки и пользовательских приложений, а также возможностью предустановки заранее выбранных ролей сервера. Несмотря на это, все сказанное будет справедливо для любой версии Ubuntu и, с некоторыми поправками, для любого Linux дистрибутива. Установка Ubuntu Server происходит в текстовом режиме на русском языке и, как правило, не вызывает сложностей. Отдельно стоит только остановится на списке ролей: из предложенного нас, пожалуй, может заинтересовать только OpenSSH, для удаленного доступа, однако воспользовавшись пунктом Manual package selection опытный пользователь может сразу установить необходимые ему пакеты.

Если же это ваш первый сервер, то лучше всего продолжить не выбирая никакого варианта, все необходимые пакеты мы установим позже. Это позволит иметь более четкое представлении о назначении того или иного пакета и позволит успешно справляться с возможными неполадками. По окончании установки система перезагрузится и встретит нас черным экраном командной строки. Непривычного к консоли Windows-администратора это может неприятно удивить, однако ситуация на сегодняшний день такова, что все серверные роли Linux настраиваются исключительно через консоль и файлы конфигурации.

В первую очередь настроим сетевые соединения. Вводим в консоли:

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

Пока там прописан единственный интерфейс eth0, настроенный на работу по DHCP. К eth0 у нас подключен ADSL модем (или любая сеть провайдера), а eth1 смотрит во внутреннюю сеть. IP адрес на внешнем интерфейсе 192.168.1.2, шлюз (ADSL модем) 192.168.1.1, внутренняя сеть лежит в диапазоне 10.0.0.1 — 254. Тогда настройки будут выглядеть следующим образом:

Сохраняем изменения Ctrl+O и выходим Ctrl+X. Теперь нужно настроить DNS, для этого выполняем:

В этом файле необходимо указать адреса DNS серверов, лучше всего указать DNS провайдера или, как в нашем случае, OpenDNS.

Сохраняем. Теперь нужно перезапустить сетевые службы (либо перезагрузиться):

Собственно сеть настроена, можно переходить к следующему этапу, однако мы рекомендуем установить еще несколько пакетов для удобства администрирования. Сначала обновим список доступных пакетов:

Также рекомендуем обновить версии пакетов до актуальных:

Теперь установим Midnight Commander (mc), файловый менеджер по образу и подобию Norton Commander или Far:

Для запуска Midnight Commander достаточно набрать в консоли его краткое имя: mc. Сразу рекомендуем включить встроенный редактор, более удобный чем nano: F9 — Настройки — Конфигурация — Встроенный редактор.

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

Для подключения с Windows станций можно использовать программу PuTTY (скачать), для корректного отображения символов перед подключением необходимо на закладке Window — Translation выбрать кодировку UTF8.

Для ограничения доступа к серверу можно дописать в файл /etc/ssh/sshd_config параметр AllowUsers с указанием пользователя имеющего доступ по SSH, например для пользователя admin:

Также можно разрешить доступ определенной группе пользователей используя параметр AllowGroups, либо запретить доступ определенным пользователям / группам использовав DenyUsers и DenyGroups.

Настраиваем NAT

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

Потом откроем его в редакторе Midnight Commander (F4) и внесем следующий текст:

Сохраняем (F2), для автоматического запуска скрипта снова открываем /etc/network/interfaces и в самый конец файла дописываем:

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

Если нигде не допущено ошибок все должно работать. Для проверки укажем на машинах внутренней сети в качестве шлюза и DNS адрес нашего роутера: 10.0.0.1 и пропингуем любой внешний адрес, например один из OpenDNS серверов: 208.67.222.222. Но интернет пока работать не будет. Почему? Да потому, что мы указали в качестве DNS сервера наш роутер, который пока таковым не является. Можно конечно явно прописать DNS на клиентской машине,однако, это не наш метод, если вдруг DNS сервера изменятся, нам что, бегать перепрописывать?

Читать еще:  Ошибка при запуске игры msvcp100 dll

Одно из решений: поднять на нашем роутере полноценный DNS сервер, но в большинстве случаев это избыточно, поэтому мы ограничимся простым кеширующим DNS (а также и DHCP) сервером Dnsmasq.

После установки открываем /etc/dnsmasq.conf, находим, раскомментируем и изменяем следующим образом строку, чтобы разрешить серверу принимать DNS запросы из внутренней сети.:

Перезапускаем DNS сервер:

После чего на клиентских машинах должен заработать интернет.

Настраиваем DHCP

Теперь, когда наш сервер работает, нужно настроить клиентские машины. Можно, конечно, прописать все параметры вручную, но как быть если клиентских машин много и расположены они по всему зданию? Здесь нам на выручку приходит протокол DHCP, который позволяет клиентским машинам получать сетевые настройки автоматически. В качестве DHCP сервера выступит уже установленный Dnsmasq. Настроить его не просто, а очень просто, для чего снова открываем /etc/dnsmasq.conf.

Все что нам надо, это задать диапазон выдаваемых адресов (в нашем случае 10.0.0.100-150), сетевую маску и время, на которое выдается IP адрес:

Адреса DNS сервера и шлюза сервер берет автоматически из системных настроек. Еще раз перезапускаем Dnsmasq:

Теперь можно выставить на клиенте автоматическое получение IP адреса и убедиться, что все работает нормально.

Просмотреть выданные адреса можно командой:

В выдаче будут перечислены выданные IP адреса и MAC адреса которым они выданы.

Настраиваем кеширующий прокси-сервер Squid

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

Останавливаем прокси-сервер и приступаем к настройке:

Открываем /etc/squid/squid.conf, находим и корректируем следующие строки, не забыв их раскомменитровать:

Указываем порт и адрес на котором squid будет принимать соединения:

Указываем внутренние сети, лишние комментируем:

Разрешаем доступ из внутренних сетей (найти и раскомменитровать):

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

Задаем язык вывода ошибок для пользователя

Важное замечание! В Ubuntu 9.10 эта строка может выглядеть так, рекомендуем проверить правильность пути: error_directory /usr/share/squid/errors/ru

Сохраняем файл конфигурации. Теперь строим кэш и запускаем:

Для проверки указываем в браузере на клиентской машине использование прокси-сервера с адресом 10.0.0.1 и портом 3128, убеждаемся что все работает. Остается настроить прозрачную работу прокси-сервера, чтобы http трафик заворачивался на Squid автоматически, без прописывания прокси на клиенте. Для этого открываем /etc/nat и дописываем в конец строку:

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

Linux маршрутизатор с несколькими внешними интерфейсами

Взято здесь, хорошая статья, но сервак помер, решил сохранить, а то мало ли что.

Содержание

Linux маршрутизатор с несколькими внешними интерфейсами

From: Трифонов Евгений aka ieroglif aka Sart

Subject: Linux маршрутизатор с несколькими внешними интерфейсами.

Настройка линукс маршрутизатора через iptables + iproute2 на два (и

больше) внешних интерфейса.

Предполагается:

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

Имеется:

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

Задача:

Объеденить всех пользователей в одну локальную сеть и пускать одних пользователей в интернет через одного провайдера, других — через другого.

В рассматриваемом примере, все пользователи в локальной сети будут находиться в сети 172.16.0.0/16, при этом пользователей из подсети 172.16.0.0/24 надо пропускать в интернет через первого провайдера, а пользователей 172.16.1.0/24 — через второго.

Будем использовать iproute2 для таблиц маршуризации и iptables для ната.

Обозначим:

Настраиваем статические адреса на сетевые карты.

Debian (ubuntu) хранит настройки в файле

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

Настаиваем маршрутизацию с утилитой ip.

Утилита route позволяет нам обратиться к таблице маршртизации.

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

Основа маршрутизации через разные таблицы — правила (rule)

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

Просмотреть список уже имеющихся таблиц можно командой

Мы видим, что у нас есть три правила: таблица 255, main и default. То, что выдает нам route — хранится в таблице main, что можно увидеть командой

В качестве номеров таблиц можно использовать цифры, ( пример: 0: from all lookup 255 ), а можно прописать на эти цифры какие-то более понятные простым смертным имена ( пример: 32766: from all lookup main ).

Так что обозначим свои таблицы:

и добавляем туда записи вида:

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

Теперь создаем некий скрипт, который в последствии будет все нам прописывать при старте системы.

Понятное дело, что каждый использует свой любимый редактор =)

В целом, понятно все, за исключением одного вопроса — что же это за метка такая в последних строчках?

Тут мы обращаемся к утилите iptables.

Краткая теория. (полную и на русском языке можно, а вообще-то, даже нужно, читать тут http://www.opennet.ru/docs/RUS/iptables/ )

Утилита iptables так же основана на таблицах. только таблиц в ней фиксированно — три.

  • mangles — таблица используется для изменений заголовков пакетов.
  • filter — самая наша основаная таблица для файрвола — тут мы производим все блокировки, разрешения.
  • nat — таблица, как понятно из названия для ната.

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

Когда паркт попадает на интерфейс, и, его ловит iptables, то он проходит следующие таблицы и цепочки, важные для нас:

  1. таблица mangle цепочка PREROUTING
  2. обработка маршрутизации.
  3. таблица nat цепочка POSTROUTING

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

Скрипт для маршрутизации:

И так, что же происходит.

Пусть адрес пользователя 172.16.0.2

У пользователя прописан дефолтный гейт 172.16.0.1 — т.е. все пакеты которые направлены не в локальную сеть пойдут туда.

На наш маршрутизатор приходит пакет от 172.16.0.2 и на адрес (к примеру) 4.4.4.4

  1. пакет попадает в таблицу mangle в цепоку PREROUTING и там по правилу «все пакеты от $NET_SUB1 и не в $NET_LOCAL» маркируется меткой 10 и попускается дальше.
  2. пакет попадает в правила маршрутизации и обрабатывается по правилу «все пакеты, которые имеют метку 10 маршрутизировать по таблице T1». попав в эту таблицу маршрутизатор отправляет пакет в дефолтный гейт для этой таблицы, т.к. адрес 4.4.4.4 не подходит ни под одну сеть, которые есть в этой таблице.
  3. пакет попадает в таблицу nat в цепочку POSTROUTING и там по правилу «натим все пакеты которые имеют метку 10» натится наружу.

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

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

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

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

Но настройка файрвола — это уже второй вопрос, который в эту статью не входит.

Ссылка на основную публикацию
Adblock
detector