Сервер доступа интернет linux

Интернет-шлюз на базе 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.

Читайте также:  Configure file server linux

Желающим сделать прозрачное проксирование необходимо изменить в файле настроек 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

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

Читайте также:  High cpu usage in linux

Если после перезагрузки правила iptables не восстанавливаются, добавьте:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

в любой стартовый скрипт (rc.local например). Вместо eth0 надо написать ppp0, если этот интерфейс получает интернет от провайдера:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Источник

Домашний интернет-шлюз. Начальная настройка 6-портового мини-компьютера на Ubuntu Server 20.04 LTS

На просторах интернета присутствует бесчисленное количество информации касательно настройки сервера на Ubuntu, но на каждом шагу можно встретить неочевидные для новичка моменты. Я хочу поделиться своим опытом и, возможно, решить чью-то проблему. В статье будет рассказано, как настроить многопортовый сервер (6 портов): Netplan, DHCP-сервер, UFW(Uncomplicated Firewall). А теперь обо всем по порядку.

Введение

Обновил я интернет до 500 Мбит/с, и пришло время заняться 100 Мбитным сервером, который работал на Pentium 3 и был уже на грани. Выбор пал на китайского зверя. Все, что нужно — имеется, потребление в обычном режиме не превышает 15W, запас производительности для дополнительных задач есть.

Установку ОС расписывать не буду («ОК — Далее — Далее»), отмечу только, что при установке требуется сконфигурировать хотя бы один сетевой интерфейс для доступа в интернет.

Для удобства я использую Midnight Commander и его текстовый редактор. Работать будем от root-пользователя:

Итак, у нас есть установленная Ubuntu Server, начнем с конфигурации остальных сетевых интерфейсов.

Netplan

В последних версиях Ubuntu появилась утилита Netplan, позволяющая настроить сеть в унифицированном формате и выбирать сетевой менеджер для работы. По умолчанию используется Systemd-networkd, я же выбрал NetworkManager, так как установил Web-интерфейс Cockpit, который использует именно NM для отображения части информации.
Синтаксис конфигурации Netplan очень строгий и лишний пробел или табуляция может вызвать ошибку.

Подробнее о функционале уже расписывали habr.com/ru/post/448400, так же различные примеры есть на сайте netplan.io/examples.

Посмотрим названия интерфейсов:

Перейдем в директорию /etc/netplan и откроем (F4 для МС) файл 50-cloud-init.yaml. Для сетевого интерфейса, который будет использоваться для подключения к интернету, определим получение настроек по dhcp (dhcp4: true). В моем случае это enp6s0. Для остальных укажем false и добавим параметр optional: true, т.к. интерфейс может быть ни к чему не подключен.

Для объединения интерфейсов в локальную сеть я использовал bridge, но, возможно, правильнее было бы использовать vlan. Создадим мост lan-br, зададим общий IP-адрес, DNS-сервер и пропишем объединяемые интерфейсы:

 bridges: lan-br: dhcp4: false addresses: [ 192.168.13.1/24 ] nameservers: addresses: [ 192.168.13.1 ] interfaces: [ enp1s0, enp2s0, enp3s0, enp4s0, enp5s0 ]

У меня будет собственный DNS-сервер, поэтому указываю адрес своего сервера в поле nameservers, можно указать например 8.8.8.8 (Google). Указываем версию и менеджер. В итоге должно получиться примерно так:

network: ethernets: enp1s0: dhcp4: false optional: true enp2s0: dhcp4: false optional: true enp3s0: dhcp4: false optional: true enp4s0: dhcp4: false optional: true enp5s0: dhcp4: false optional: true enp6s0: dhcp4: true nameservers: addresses: - 127.0.0.1 - 192.168.13.1 bridges: lan-br: dhcp4: false addresses: [ 192.168.13.1/24 ] nameservers: addresses: [ 192.168.13.1 ] interfaces: [ enp1s0, enp2s0, enp3s0, enp4s0, enp5s0 ] version: 2 renderer: NetworkManager 

Сохраняем файл и проверяем/применяем конфигурацию:

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0: mtu 1500 qdisc fq_codel master lan-br state UP group default qlen 1000 link/ether 0c:e8:2c:68:5b:57 brd ff:ff:ff:ff:ff:ff 3: enp2s0: mtu 1500 qdisc fq_codel master lan-br state UP group default qlen 1000 link/ether 0c:e8:2c:68:5b:58 brd ff:ff:ff:ff:ff:ff 4: enp3s0: mtu 1500 qdisc fq_codel master lan-br state UP group default qlen 1000 link/ether 0c:e8:2c:68:5b:59 brd ff:ff:ff:ff:ff:ff 5: enp4s0: mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 0c:e8:2c:68:5b:5a brd ff:ff:ff:ff:ff:ff 6: enp5s0: mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 0c:e8:2c:68:5b:5b brd ff:ff:ff:ff:ff:ff 7: enp6s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 0c:e8:2c:68:5b:5c brd ff:ff:ff:ff:ff:ff inet 188.32.236.197/19 brd 188.32.255.255 scope global dynamic noprefixroute enp6s0 valid_lft 2898sec preferred_lft 2898sec inet6 fe80::ee8:2cff:fe68:5b5c/64 scope link valid_lft forever preferred_lft forever 8: lan-br: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 0c:e8:2c:68:5b:57 brd ff:ff:ff:ff:ff:ff inet 192.168.13.1/24 brd 192.168.13.255 scope global noprefixroute lan-br valid_lft forever preferred_lft forever inet6 fe80::ee8:2cff:fe68:5b58/64 scope link valid_lft forever preferred_lft forever

DHCP-сервер

Настроим DHCP-сервер для того, чтобы клиенты могли получать IP-адреса автоматически.

apt-get install isc-dhcp-server

В файле /etc/default/isc-dhcp-server правим строчку:

Читайте также:  Настройка звука linux mint звука нет

Переходим в /etc/dhcp, открываем dhcpd.conf и прописываем настройки:

option domain-name "your-domain-name"; option domain-name-servers 192.168.13.1; subnet 192.168.13.0 netmask 255.255.255.0
service isc-dhcp-server restart

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

UFW

UFW (Uncomplicated Firewall) — инструмент для более легкой настройки iptables. Настроим фаервол и пересылку пакетов между интерфейсами. Переходим в/etc/ufw и в файле sysctl.conf раскомментируем строку:

Если Вы подключены через ssh перед началом откройте 22 порт:

Включим UFW, проверим состояние:

ufw enable ufw status verbose

Зададим политики по умолчанию:

ufw default deny incoming ufw default allow outgoing ufw default allow routed

Разрешим доступ из локальной сети:

ufw allow in on lan-br to any

Настроим NAT. Откроем файл before.rules и пишем следующее перед блоком *filter:

*nat :POSTROUTING ACCEPT [0:0] #local -A POSTROUTING -s 192.168.13.0/24 -o enp6s0 -j MASQUERADE COMMIT

Сохраняемся и перезапускаем ufw:

Проверим iptables, должна появиться наша строчка:

На этом базовую настройку сервера можно считать законченной.

Заключение

Я не поднимал вопрос настройки DNS-сервера, так как планирую выпустить вторую часть, где будет изложена настройка Dnscrypt-proxy в роли DNS-сервера для локальной сети.

Более подробная информация:

Источник

Оцените статью
Adblock
detector