Имеется сервер и подключенные к нему клиенты по локальной сети. Сервер имеет выход в интернет. Необходимо устроить раздачу интернета сервером.

Основная часть

Собственно, установка шлюза на базе Ubuntu Server занимает не больше 10-15 минут.

PPPoE

Если Вы используете для подключения по локальной сети PPPoE, вам необходимо просто-напросто ввести в терминале команду:

sudo pppoeconf

и дать ответы на вопросы. По окончании работы 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:
login * password

Запускаем xl2tpd,

sudo service xl2tpd start

соединение должно быть установлено.

На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить:

sudo apt-get update

Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:

  • Установите и запустите пакет для раздачи пакетов по сети:
    sudo apt-get install dnsmasq

    Или, вы можете использовать DNS провайдера.

  • Так же необходимо установить пакет ipmasq для NAT:

    sudo apt-get install ipmasq

Вот и всё!

Прокси-сервер squid

Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS.

Для установки прокси-сервера squid необходимо выполнить команду:

apt-get install squid

Теперь редактируем конфигурационный файл. Открываем /etc/squid/squid.conf, ищем нужные строки и корректируем следующим образом:

...
http_port 3128 #<<< раскомментировать эту строчку
...
cache_dir ufs /var/spool/squid 100 16 256 #<<< раскомментировать эту строчку
...
acl our_networks src 192.168.0.0/24 #<<< раскомментировать эту строчку
http_access allow our_networks #<<< раскомментировать эту строчку
...
visible_hostname proxy.localdomain #<<< добавить строчку, скорее всего взамен строки 2161
...

Перезапускаем прокси-сервер командой:

/etc/init.d/squid restart

Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси - пишем 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 раздавать на eth12)

Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)

Для организации совместного доступа в Интернет с помощью общего доступа к подключению Интернета на сервере должна быть одна сетевая карта для подключения к внутренней сети и еще одна карта или модем для подключения к Интернету.

На сервере

Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия.

Исходные данные: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:

  • eth0 - к ней подключен интернет;
  • eth1 - к ней подключена локальная сеть.

Настройте вторую карту (eth1) так:

  • IP: 192.168.0.1
  • Netmask: 255.255.255.0

Это можно сделать вручную или используя терминал:

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0
sudo ifconfig eth1 up

Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf. Откройте сам файл командой:

sudo gedit /etc/sysctl.conf

А затем вставьте следующую строчку:

net.ipv4.ip_forward=1

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

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

Эту строчку, для автоматической подгрузки правил:

pre-up iptables-restore < /etc/iptables.up.rules

Также в этот файл добавляем правила роутинга:

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

На клиентском компьютере

Установите на втором компьютере:

  • IP: 192.168.0.2
  • Netmask/Маска: 255.255.255.0
  • Gateway/Шлюз: 192.168.0.1
  • DNS: 192.168.0.1

Второй компьютер теперь должен быть подключён к интернету.

Если компьютеров несколько

Можно использовать dnsmasq как DHCP сервер. Для этого на сервере редактируем файл dnsmasq.conf:

sudo nano /etc/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 # шлюз по умолчанию 

Перезапускаем dnsmasq:

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

Ссылки

1) Настройка на примере Билайна
2) В Вашем случае может быть eth0, eth2 и т.д.