- Интернет-шлюз на базе Ubuntu Server / Internet Connection Sharing + Squid, Firestarter
- Основная часть
- PPPoE
- L2TP
- Прокси-сервер squid
- Раздача Интернета в локальную сеть c помощью firestarter
- Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)
- На сервере
- На клиентском компьютере
- Если компьютеров несколько
- Интернет шлюз на Ubuntu / Debian
- Настройка ядра системы
- Настройка брандмауэра
- Iptables
- Проброс портов (Port Forwarding)
- Iptables
Интернет-шлюз на базе Ubuntu Server / Internet Connection Sharing + Squid, Firestarter
Имеется сервер и подключенные к нему клиенты по локальной сети. Сервер имеет выход в интернет. Необходимо устроить раздачу интернета сервером.
Основная часть
Собственно, установка шлюза на базе Ubuntu Server занимает не больше 10-15 минут.
PPPoE
Если Вы используете для подключения по локальной сети PPPoE, вам необходимо просто-напросто ввести в терминале команду:
и дать ответы на вопросы. По окончании работы pppoeconf соединение должно быть установлено.
L2TP
Если Вы используете для подключения к провайдеруL2TP, то для этого понадобится установить xl2tpd — демон l2tp и pppd — демон ppp. 1)
sudo apt-get install pppd xl2tpd
Редактируем файл настроек xl2tpd:
sudo nano /etc/xl2tpd/xl2tpd.conf
[global] access control = yes # разрешать соединения только с адресами из lac секций [lac beeline] lns = tp.internet.beeline.ru # адрес для подключения redial = yes # "перезвонить" при потере связи redial timeout = 10 # время между попытками переустановить связь после обрыва(в секундах) max redials = 100 # максимальное количество попыток autodial = yes # устанавливать соединение при запуске xl2tpd require pap = no # не использовать pap аутентификацию require chap = yes # использовать chap аутентификацию require authentication = no # не использовать аутентификацию удаленного сервера name = 000ххххххх # логин pppoptfile = /etc/ppp/options.l2tp # файл с опциями ppp ppp debug = yes # вывод подробной информации pppd в syslog tx bps = 100000000 # скорость туннеля
sudo nano /etc/ppp/options.xl2tp
000ххххххх #номер договора noauth nobsdcomp # nodeflate # параметры сжатия пакетов nopcomp # noaccomp # connect /bin/true remotename beeline # метка для удаленного сервера ipparam beeline # дополнительный параметр для системных скриптов defaultroute # маршрут по умолчанию через ppp интерфейс replacedefaultroute mtu 1460
Записываем в файл chap-secrets логин и пароль:
sudo nano /etc/ppp/chap-secrets:
sudo service xl2tpd start
соединение должно быть установлено.
На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить:
Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:
sudo apt-get install dnsmasq
sudo apt-get install ipmasq
Прокси-сервер squid
Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP , FTP , Gopher и HTTPS.
Для установки прокси-сервера squid необходимо выполнить команду:
Теперь редактируем конфигурационный файл. Открываем /etc/squid/squid.conf , ищем нужные строки и корректируем следующим образом:
Перезапускаем прокси-сервер командой:
Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси — пишем IP адрес интерфейса, обращенного в локальную сеть. Скорее всего,это будет 192.168.0.1, порт прокси — указанный в конфигурационном файле 3128.
Желающим сделать прозрачное проксирование необходимо изменить в файле настроек squid.conf одну строчку:
. http_port 3128 transparent .
Затем для заворачивания нужных портов на прокси-сервер прописывается правило:
iptables -t nat -A PREROUTING -i eth0 ! -d 192.168.0.0/24 -p tcp -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.0.1:3128
Раздача Интернета в локальную сеть c помощью firestarter
Firestarter – это средство для создания межсетевых экранов для Linux, использующее GNOME. С помощью мастера можно создать базовый межсетевой экран, в дальнейшем его возможности расширяются с помощью динамических правил. Несколькими щелчками мыши можно открывать и закрывать порты или скрывать сервисы, оставляя доступ только к некоторым из них. В программе имеется монитор, который в режиме реального времени показывает попытки поиска злоумышленниками открытых портов.
Для начала установим firestarter :
sudo apt-get install firestarter
При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1 2)
Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)
Для организации совместного доступа в Интернет с помощью общего доступа к подключению Интернета на сервере должна быть одна сетевая карта для подключения к внутренней сети и еще одна карта или модем для подключения к Интернету.
На сервере
Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия.
Исходные данные: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:
Это можно сделать вручную или используя терминал:
sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0 sudo ifconfig eth1 up
Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf . Откройте сам файл командой:
А затем вставьте следующую строчку:
Для того, чтобы применить это правило до перезагрузки выполните:
sysctl -w net.ipv4.ip_forward="1"
Затем добавляем правило для NAT:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Установите и запустите пакет для раздачи пакетов по сети:
sudo apt-get install dnsmasq
Или, вы можете использовать DNS провайдера.
Чтобы NAT работал после перезагрузки сохраняем настройки iptables в файл:
iptables-save > /etc/iptables.up.rules
И добавляем в конец файла:
sudo gedit /etc/network/interfaces
Эту строчку, для автоматической подгрузки правил:
Также в этот файл добавляем правила роутинга:
up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1 up route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0
На клиентском компьютере
Установите на втором компьютере:
Второй компьютер теперь должен быть подключён к интернету.
Если компьютеров несколько
Можно использовать dnsmasq как DHCP сервер. Для этого на сервере редактируем файл dnsmasq.conf:
interface=eth1 # интерфейс, который будет слушать dnsmasq listen-address=192.168.0.1 # адрес, на котором будет находиться dnsmasq bind-interfaces eth1 # слушать только интерфейс dhcp-range=192.168.0.5,192.168.0.50,255.255.255.0,24h1 # диапазон выдаваемых адресов dhcp-option=3,192.168.0.1 # шлюз по умолчанию
sudo service dnsmasq restart
Настраиваем клиентские компьютеры на автоматическое получение адреса.
Если после перезагрузки правила iptables не восстанавливаются, добавьте:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
в любой стартовый скрипт (rc.local например). Вместо eth0 надо написать ppp0, если этот интерфейс получает интернет от провайдера:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Интернет шлюз на Ubuntu / Debian
Обновлено: 16.02.2023 Опубликовано: 23.01.2019
- Включение redirect на уровне ядра.
- Настройкой брандмауэра.
- Опционально, настройка проброса портов.
Настройка ядра системы
sysctl -p /etc/sysctl.d/gateway.conf
Если мы получим ошибку sysctl command not found, либо нужно установить пакет:
либо перезайти в режим суперпользователя с загрузкой его окружения:
В случае с единственным сетевым адаптером больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.
В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран.
Настройка брандмауэра
Как правило, управление брандмауэром netfilter в Linux на базе Debian выполняется с помощью утилиты iptables.
Iptables
Предположим, что сеть Интернет настроена через интерфейс ens160, а локальная сеть доступна через ens32. Создадим правило:
iptables -t nat -I POSTROUTING -o ens160 -j MASQUERADE
Если на сервере для доступа в локальную и глобальную сети используются разные сетевые интерфейсы, нам может понадобиться создать еще два правила.
iptables -I FORWARD -i ens32 -o ens160 -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i ens32 -o ens160 -j ACCEPT
* интерфейс ens160, как условились ранее, используется для доступа в Интернет. Интерфейс ens32 — локальная сеть.
Сохраняем настройки iptables:
apt install iptables-persistent
Проброс портов (Port Forwarding)
Необходим для перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть.
Iptables
Настройка выполняется двумя командами:
iptables -t nat -A PREROUTING -p tcp -m tcp -d 10.8.232.111 —dport 25 -j DNAT —to-destination 192.168.0.15:8025
iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.0.15 —sport 8025 -j SNAT —to-source 10.8.232.111:25
iptables -t nat -A PREROUTING -p tcp -i eth0 —dport 25 -j DNAT —to-destination 192.168.0.15:8025
iptables -A FORWARD -p tcp -d 192.168.0.15 —dport 8025 -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT
* где eth0 — внешний сетевой интерфейс.
iptables -I INPUT 1 -p tcp —dport 8025 -j ACCEPT
* обратите внимание, что мы разрешаем порт, на который переводим запрос, так как цепочки POSTROUTING и PREROUTING работают до цепочки FILTER, а потому открывать нужно не входящий порт (25), а тот, на который назначается пакет (8025).
Не забываем сохранить правила: