Интернет-шлюз на базе Ubuntu Server / Internet Connection Sharing + Squid, Firestarter Сравнение версий

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:sharing_internet [2009/07/23 00:14]
создано
wiki:sharing_internet [2014/05/16 22:39] (текущий)
Строка 1: Строка 1:
-====== ​Шлюз ​Интернета на базе Ubuntu-Server / Internet Connection Sharing + Squid,​Firestarter ======+====== Интернет-шлюз ​на базе Ubuntu Server / Internet Connection Sharing + Squid, Firestarter ====== 
 +Имеется сервер и подключенные к нему клиенты по локальной сети. Сервер имеет выход в интернет. Необходимо устроить раздачу интернета сервером.
  
 +===== Основная часть =====
 +Собственно,​ установка шлюза на базе Ubuntu Server занимает не больше 10-15 минут.
  
-^   ​Автор(ыстатьи   ^   Поддерживаемые версии ​Ubuntu ​  ^ +===== PPPoE ===== 
-|   Vadim Bilalov ​  ​| ​  All Ubuntu ​  |+Если Вы используете для подключения по локальной сети [[wpru>​PPPoE|PPPoE]],​ вам необходимо просто-напросто ввести в терминале команду:​ <​code>​sudo pppoeconf</​code>​ 
 +и дать ответы на вопросы. По окончании работы ''​pppoeconf''​ соединение должно быть установлено.
  
-=====    ​Краткое описание ​руководства =====+===== L2TP ===== 
 +Если Вы используете для подключения к провайдеру[[wpru>​L2TP|L2TP]],​ то 
 +для этого понадобится установить xl2tpd — демон l2tp и pppd — демон ppp.((Настройка на примере Билайна))
  
-Имеется сервер,​подключенные к нему клиенты по локальной сети,​сервер имеет ​выход в интернет.Необходимо устроить раздачу Интернета сервером.+Устанавливаем
 +<code bash>​sudo apt-get install pppd xl2tpd</​code>​
  
 +Редактируем файл настроек xl2tpd:
  
-===== Основная часть ===== +<code bash>​sudo ​nano /etc/xl2tpd/xl2tpd.conf</​code>​
-Собственно,​ установка шлюза на базе Ubuntu-Server занимает не больше 10-15 минут. +
-   - Устанавливаем систему (я ставил ubuntu-6.06-server-i386.iso) +
-   - У меня подключение по локальной сети с использованием PPPoE. Для этого просто-напросто было запущено ​<code bash>​sudo ​pppoeconf</​code>​и даны ответы на вопросы. По окончании работы **pppoeconf** соединение было установлено,​ о чем свидетельствовал положительный вывод на команду <code bash>​ifconfig ppp0</​code>​ +
-   - На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в **/etc/apt/source.list** и выполнить <code bash>​sudo apt-get update</​code>​ +
-   - Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:​ **dnsmasq** - чтобы переправлялись ваши DNS-запросы,​и **ipmasq** - собственно для NAT'​a. +
-   - На машинках локальной сети получаем IP по DHCP от dnsmasq либо прописываем шлюз по умолчанию вручную. +
-   - Вот и всё!+
  
 +<file bash>​[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 ​        # скорость туннеля</​file>​
 +
 +Затем редактируем:​
 +
 +<code bash>​sudo nano /​etc/​ppp/​options.xl2tp</​code>​
 +
 +<​file>​000ххххххх #номер договора
 +noauth
 +nobsdcomp ​            # ​
 +nodeflate ​            # параметры сжатия пакетов
 +nopcomp ​              # ​
 +noaccomp ​             # 
 +connect /bin/true
 +remotename beeline ​   # метка для удаленного сервера
 +ipparam beeline ​      # дополнительный параметр для системных скриптов
 +defaultroute ​         # маршрут по умолчанию через ppp интерфейс
 +replacedefaultroute
 +mtu 1460</​file>​
 +
 +Записываем в файл chap-secrets логин и пароль:​
 +
 +<code bash>​sudo nano /​etc/​ppp/​chap-secrets:</​code>​
 +
 +
 +<​file>​login * password</​file>​
 +
 +
 +Запускаем xl2tpd,
 +
 +<code bash>​sudo service xl2tpd start</​code>​
 +
 +соединение должно быть установлено.
 +
 +На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в ''/​etc/​apt/​source.list''​ и выполнить:​ <​code>​sudo apt-get update</​code>​
 +
 +Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:​
 +  * Установите и запустите пакет для раздачи пакетов по сети: <​code>​sudo apt-get install dnsmasq</​code>​ Или, вы можете использовать DNS провайдера.
 +  * Так же необходимо установить пакет ''​ipmasq''​ для NAT: <​code>​sudo apt-get install ipmasq</​code>​
 +
 +Вот и всё!
 ===== Прокси-сервер squid ===== ===== Прокси-сервер squid =====
 +[[wpru>​Squid|Squid]] — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS.
  
-Доустановим на наш сервер ​кэширующий ​прокси-сервер ​**squid**: +Для установки прокси-сервера [[squid]] необходимо выполнить команду: 
-   - Репозитарии мы уже ​подключали ранее, ​так что просто ставим пакет ​<​code ​bash>apt-get install squid</​code>​ +<​code>​apt-get install squid</​code>​ 
-   - Теперь редактируем конфигурационный файл. Открываем ​**/​etc/​squid/​squid.conf**, ищем нужные строки и корректируем следующим образом:<​file>​...+ 
 +Теперь редактируем конфигурационный файл. Открываем ​''​/​etc/​squid/​squid.conf''​, ищем нужные строки и корректируем следующим образом:​ 
 +<​file>​...
 http_port 3128 #<<<​ раскомментировать эту строчку http_port 3128 #<<<​ раскомментировать эту строчку
 ... ...
Строка 33: Строка 92:
 visible_hostname proxy.localdomain #<<<​ добавить строчку,​ скорее всего взамен строки 2161 visible_hostname proxy.localdomain #<<<​ добавить строчку,​ скорее всего взамен строки 2161
 ...</​file>​ ...</​file>​
-   ​- ​Перезапускаем прокси:<​code ​bash>/​etc/​init.d/​squid restart</​code>​ + 
-   - Настраиваем браузеры на клиентских машинах на использование прокси:​ адрес прокси - пишем IP-адрес интерфейса,​ обращенного в локальную сеть. Скорее всего,​это будет **192.168.0.1**,​ порт прокси - указанный в конфигурационном файле **3128** +Перезапускаем прокси-сервер командой: <​code>/​etc/​init.d/​squid restart</​code>​ 
-   - Желающим сделать прозрачное проксирование необходимо изменить в конфиге squid.conf одну строчку:<​file>​...+ 
 +Настраиваем браузеры на клиентских машинах на использование прокси:​ адрес прокси - пишем IP адрес интерфейса,​ обращенного в локальную сеть. Скорее всего,​это будет **192.168.0.1**,​ порт прокси - указанный в конфигурационном файле **3128**
 + 
 +Желающим сделать прозрачное проксирование необходимо изменить в файле настроек ''​squid.conf'' ​одну строчку:​ 
 +<​file>​...
 http_port 3128 transparent http_port 3128 transparent
-...</​file>​Затем для заворачивания нужных портов на сквид прописывается правило<​code bash>​iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/​24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:​3128</​code>+...</​file>​
  
-====== Раздача Интернета в локальную сеть c помощью firestarter====== +Затем ​для заворачивания нужных портов на прокси-сервер прописывается правило:​  
-   * Для начала установим firestarter:<​code>​sudo apt-get install firestarter</​code>​при настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1((В Вашем случае может быть eth0,eth2 и т.д.)) или: +<​code>​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</code>
-   * **Дано:** +
-   * Сетевая карточка eth0 подключенная с помощью PPPoE к интернету и eth1 подключенная ​к сети с адресом 192.168.0.1,​к которой подключена сеть с адресами 192.168.0.* ,в которой нужно раздать интернет. +
-   - Перейдём в режим суперпользователя:<​code bash>​sudo su</​code>​ +
-   - Для начала включим форвардинг:<​code>​echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward</​code>​Чтобы форвардинг автоматически включался при запуске системы,​открываем файл:<​code bash>​gedit /​etc/​sysctl.conf</​code>​и добавляем в него строчку:<​file>​net.ipv4.ip_forward = 1 </​file>​ +
-   - Затем включаем NAT:<​code ​bash>​iptables -t nat -A POSTROUTING ​-o ppp0 -j MASQUERADE</​code>​Где ppp0 название вашего интерфейса через который выходите в интернет. +
-   - Чтобы NAT работал после перезагрузки делаем следующее:​сохраняем настройки iptables в файл<​code bash>​iptables-save > /​etc/​iptables.up.rules</code>и добавляем в конец файла:<​code bash>​gedit /​etc/​network/​interfaces</​code>​эту строчкудля автоматической подгрузки правил<​file>​pre-up iptables-restore < /​etc/​iptables.up.rules</​file>​ +
-   Также в этот файл добавляем правила роутинга:<​file>​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</file> +
-   - Проверяем DNS на клиенте и радуемся расшаренному Интернету+
  
-----+====== Раздача Интернета в локальную сеть c помощью firestarter ====== 
 +[[http://​www.fs-security.com/​|Firestarter]] – это средство для создания межсетевых экранов для Linux, использующее [[GNOME]]. С помощью мастера можно создать базовый межсетевой экран, в дальнейшем его возможности расширяются с помощью динамических правил. Несколькими щелчками мыши можно открывать и закрывать порты или скрывать сервисы,​ оставляя доступ только к некоторым из них. В программе имеется монитор,​ который в режиме реального времени показывает попытки поиска злоумышленниками открытых портов.
  
-===== Ссылки =====+Для начала установим ''​firestarter'':​ 
 +<​code>​sudo apt-get install firestarter</​code>​
  
-  ​* Обсуждение статьи на форуме [[http://​forum.ubuntu.ru/​index.php?​topic=3244.0|forum.ubuntu.ru]] +При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1((В Вашем случае может быть eth0, eth2 и т.д.)) 
-  *Сообщение на форуме ​о firestarter:​[[http://​forum.ubuntu.ru/​index.php?​topic=47337.msg352852#​msg352852]]+  
 +====== Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing) ====== 
 +Для организации совместного доступа в Интернет с помощью общего доступа к подключению Интернета на сервере должна быть одна сетевая карта для подключения к внутренней сети и еще одна карта или модем для подключения к Интернету. 
 + 
 +==== На сервере ==== 
 +Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия. 
 + 
 +Исходные данные:​ 
 +Оба компьютера соединены по сети. На сервере установлено две сетевые карты:​ 
 +  ​eth0 - к ней подключен интернет;​ 
 +  * eth1 - к ней подключена локальная сеть. 
 + 
 +[[настройка_сети_вручную|Настройте вторую карту]] (eth1) так: 
 +  * IP: 192.168.0.1 
 +  * Netmask: 255.255.255.0 
 + 
 +Это можно сделать вручную или используя [[терминал]]:​  
 +<​code>​ 
 +sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0 
 +sudo ifconfig eth1 up 
 +</​code>​ 
 + 
 +Разрешите направление пакетов. Чтобы сделать это, отредактируйте ''/​etc/​sysctl.conf''​.  
 +Откройте сам файл командой:​ 
 +<​code>​sudo gedit /​etc/​sysctl.conf</​code>​ 
 +А затем вставьте следующую строчку:​ 
 +<​code>​net.ipv4.ip_forward=1</​code>​ 
 + 
 +Для того, чтобы применить это правило до перезагрузки выполните:​ 
 +<​code>​sysctl -w net.ipv4.ip_forward="​1"</​code>​ 
 + 
 +Затем добавляем правило для [[wpru>​NAT|NAT]]:​ 
 +<​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​ 
 +Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:​ 
 +<​code>​iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</​code>​ 
 + 
 +Установите и запустите пакет для раздачи пакетов по сети: 
 +<​code>​sudo apt-get install dnsmasq</​code>​ 
 +Или, вы можете использовать DNS провайдера. 
 + 
 +Чтобы NAT работал после перезагрузки сохраняем настройки ''​iptables''​ в файл: 
 +<​code>​iptables-save > /​etc/​iptables.up.rules</​code>​ 
 + 
 +И добавляем в конец файла:​ 
 +<​code>​sudo gedit /​etc/​network/​interfaces</​code>​ 
 +Эту ​строчку, для ​автоматической подгрузки правил:​ 
 +<​code>​pre-up iptables-restore < /​etc/​iptables.up.rules</​code>​ 
 + 
 +Также в этот файл добавляем правила роутинга:​ 
 +<​code>​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</​code>​ 
 + 
 +==== На клиентском компьютере ==== 
 +Установите на втором компьютере:​ 
 +  * IP: 192.168.0.2 
 +  * Netmask/​Маска:​ 255.255.255.0 
 +  * Gateway/​Шлюз:​ 192.168.0.1 
 +  * DNS: 192.168.0.1 
 + 
 +Второй компьютер теперь должен быть подключён к интернету. 
 + 
 +====Если компьютеров несколько==== 
 +Можно использовать dnsmasq ​ как [[wpru>​DHCP|DHCP]] сервер. 
 +Для этого на сервере редактируем ​файл dnsmasq.conf:​ 
 + 
 +<code bash>​sudo nano /​etc/​dnsmasq.conf</​code>​ 
 + 
 +<file bash>​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 # шлюз по умолчанию </​file>​ 
 + 
 +Перезапускаем dnsmasq: 
 + 
 +<code bash>​sudo service dnsmasq restart</​code>​ 
 + 
 +Настраиваем клиентские компьютеры на автоматическое получение адреса. 
 + 
 +Если после перезагрузки правила iptables не восстанавливаются,​ добавьте:​ 
 +<​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​ 
 +в любой стартовый скрипт (rc.local например). 
 +Вместо eth0 надо написать ppp0, если этот интерфейс получает интернет от провайдера:​ 
 +<​code>​iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</​code>​ 
 + 
 +===== Ссылки ===== 
 +  * [[настройка_сети_вручную|Настройка сети вручную]] 
 +  * [[http://​easylinux.ru/​node/​117|Раздача интернета]] 
 +  * [[http://​forum.ubuntu.ru/​index.php?​topic=47337.msg352852#​msg352852|Обсуждение статьи на форуме (ICS: Internet Connection Sharing)]] 
 +  * [[http://​support.microsoft.com/​kb/​306126/​ru|Настройка ​общего доступа к подключению Интернета в Windows XP]] 
 +  * [[http://​forum.ubuntu.ru/​index.php?​topic=3244.0|Обсуждение статьи ​на форуме]] 
 +  * [[http://​forum.ubuntu.ru/​index.php?​topic=47337.msg352852#​msg352852|Сообщение на форуме о firestarter]]
  
-{{tag> ​Howto squid ICS proxy firestarter}}+{{tag>​squid ICS proxy firestarter ​Администрирование Server Linux_на_предприятии,​ HOWTO}}