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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:sharing_internet [2010/04/09 09:02]
перенес из статьи Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing)
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 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 либо прописываем шлюз по умолчанию вручную. +
-   - Вот и всё!+
  
 +===== PPPoE =====
 +Если Вы используете для подключения по локальной сети [[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>​
 +
 +<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 =====
-Установим на наш сервер кэширующий прокси-сервер ​[[squid]]:​ +[[wpru>​Squid|Squid]] — программный пакет, реализующий функцию ​кэширующего ​прокси-сервера для ​протоколов HTTP, FTP, Gopher ​и HTTPS. 
-   - Репозитарии мы уже ​подключали ранее, так что просто ставим ​пакет ​<​code ​bash>apt-get install squid</​code>​ + 
-   - Теперь редактируем конфигурационный файл. Открываем ​**/​etc/​squid/​squid.conf**, ищем нужные строки и корректируем следующим образом:<​file>​...+Для установки прокси-сервера [[squid]] ​необходимо выполнить команду: 
 +<​code>​apt-get install squid</​code>​ 
 + 
 +Теперь редактируем конфигурационный файл. Открываем ​''​/​etc/​squid/​squid.conf''​, ищем нужные строки и корректируем следующим образом:​ 
 +<​file>​...
 http_port 3128 #<<<​ раскомментировать эту строчку http_port 3128 #<<<​ раскомментировать эту строчку
 ... ...
Строка 24: Строка 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>​ 
 + 
 +Затем для заворачивания нужных портов на прокси-сервер ​прописывается правило:  
 +<​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>​
  
 ====== Раздача Интернета в локальную сеть c помощью firestarter ====== ====== Раздача Интернета в локальную сеть c помощью firestarter ======
 [[http://​www.fs-security.com/​|Firestarter]] – это средство для создания межсетевых экранов для Linux, использующее [[GNOME]]. С помощью мастера можно создать базовый межсетевой экран, в дальнейшем его возможности расширяются с помощью динамических правил. Несколькими щелчками мыши можно открывать и закрывать порты или скрывать сервисы,​ оставляя доступ только к некоторым из них. В программе имеется монитор,​ который в режиме реального времени показывает попытки поиска злоумышленниками открытых портов. [[http://​www.fs-security.com/​|Firestarter]] – это средство для создания межсетевых экранов для Linux, использующее [[GNOME]]. С помощью мастера можно создать базовый межсетевой экран, в дальнейшем его возможности расширяются с помощью динамических правил. Несколькими щелчками мыши можно открывать и закрывать порты или скрывать сервисы,​ оставляя доступ только к некоторым из них. В программе имеется монитор,​ который в режиме реального времени показывает попытки поиска злоумышленниками открытых портов.
  
-Для начала установим firestarter:​+Для начала установим ​''​firestarter''​:
 <​code>​sudo apt-get install firestarter</​code>​ <​code>​sudo apt-get install firestarter</​code>​
  
-При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1((В Вашем случае может быть eth0,eth2 и т.д.))+При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1((В Вашем случае может быть eth0, eth2 и т.д.))
    
 ====== Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing) ====== ====== Раздача Интернета в локальную сеть (ICS: Internet Connection Sharing) ======
Строка 43: Строка 118:
 ==== На сервере ==== ==== На сервере ====
 Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия. Для настройки общего доступа к подключению Интернета необходимо выполнить на сервере указанные ниже действия.
-<​code>​sudo apt-get install firestarter</​code>​ 
  
-**Исходные данные:​**+Исходные данные:​
 Оба компьютера соединены по сети. На сервере установлено две сетевые карты: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:
   * eth0 - к ней подключен интернет;​   * eth0 - к ней подключен интернет;​
Строка 60: Строка 134:
 </​code>​ </​code>​
  
-Разрешите направление пакетов. Чтобы сделать это, отредактируйте /​etc/​sysctl.conf. ​+Разрешите направление пакетов. Чтобы сделать это, отредактируйте ​''​/​etc/​sysctl.conf''​
 Откройте сам файл командой:​ Откройте сам файл командой:​
-<​code>​gedit /​etc/​sysctl.conf</​code>​+<​code>​sudo gedit /​etc/​sysctl.conf</​code>​
 А затем вставьте следующую строчку:​ А затем вставьте следующую строчку:​
 <​code>​net.ipv4.ip_forward=1</​code>​ <​code>​net.ipv4.ip_forward=1</​code>​
Строка 69: Строка 143:
 <​code>​sysctl -w net.ipv4.ip_forward="​1"</​code>​ <​code>​sysctl -w net.ipv4.ip_forward="​1"</​code>​
  
-Затем добавляем правило для [[http://​ru.wikipedia.org/​wiki/​NAT|NAT]]:+Затем добавляем правило для [[wpru>NAT|NAT]]:
 <​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​ <​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​
 Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе: Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:
Строка 78: Строка 152:
 Или, вы можете использовать DNS провайдера. Или, вы можете использовать DNS провайдера.
  
-Чтобы NAT работал после перезагрузки сохраняем настройки iptables в файл:+Чтобы NAT работал после перезагрузки сохраняем настройки ​''​iptables'' ​в файл:
 <​code>​iptables-save > /​etc/​iptables.up.rules</​code>​ <​code>​iptables-save > /​etc/​iptables.up.rules</​code>​
  
 И добавляем в конец файла: И добавляем в конец файла:
-<​code>​gedit /​etc/​network/​interfaces</​code>​+<​code>​sudo gedit /​etc/​network/​interfaces</​code>​
 Эту строчку,​ для автоматической подгрузки правил:​ Эту строчку,​ для автоматической подгрузки правил:​
 <​code>​pre-up iptables-restore < /​etc/​iptables.up.rules</​code>​ <​code>​pre-up iptables-restore < /​etc/​iptables.up.rules</​code>​
Строка 98: Строка 172:
  
 Второй компьютер теперь должен быть подключён к интернету. Второй компьютер теперь должен быть подключён к интернету.
 +
 +====Если компьютеров несколько====
 +Можно использовать 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 не восстанавливаются,​ добавьте:​ Если после перезагрузки правила iptables не восстанавливаются,​ добавьте:​
 <​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​ <​code>​iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</​code>​
-в любой стартовый скрипт (rc.local например)+в любой стартовый скрипт (rc.local например)
 +Вместо eth0 надо написать ppp0, если этот интерфейс получает интернет от провайдера:​ 
 +<​code>​iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</​code>​ 
 ===== Ссылки ===== ===== Ссылки =====
-  * [[[[настройка_сети_вручную|Настройка сети вручную]]+  * [[настройка_сети_вручную|Настройка сети вручную]]
   * [[http://​easylinux.ru/​node/​117|Раздача интернета]]   * [[http://​easylinux.ru/​node/​117|Раздача интернета]]
-  * [[http://​forum.ubuntu.ru/​index.php?​topic=47337.msg352852#​msg352852|Обсуждение ​даной ​статьи на форуме]]+  * [[http://​forum.ubuntu.ru/​index.php?​topic=47337.msg352852#​msg352852|Обсуждение статьи на форуме ​(ICS: Internet Connection Sharing)]]
   * [[http://​support.microsoft.com/​kb/​306126/​ru|Настройка общего доступа к подключению Интернета в Windows XP]]   * [[http://​support.microsoft.com/​kb/​306126/​ru|Настройка общего доступа к подключению Интернета в Windows XP]]
-  * Обсуждение статьи на форуме [[http://​forum.ubuntu.ru/​index.php?​topic=3244.0|forum.ubuntu.ru]] +  * [[http://​forum.ubuntu.ru/​index.php?​topic=3244.0|Обсуждение статьи на форуме]] 
-  * Сообщение на форуме о firestarter:​[[http://​forum.ubuntu.ru/​index.php?​topic=47337.msg352852#​msg352852]]+  * [[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}}