Чо то черканул про раздачу интернета в локальной сети. Предназначена для улусных локальных админов. Может кому нибудь здесь полезно будет. Ваши замечания....
Для того чтобы подключить ваши компьютеры в сети к Интернету через устройство доступа необходимо настроить шлюз (компьютер) через который другие пользователи будут выходить в сеть Интернет.
Для организации этого мероприятия нам понадобится:
1. Компьютер (не слишком навороченный, процессор не ниже Pentium IV, ОЗУ не ниже 128 мб., дисковый обьем не менее 40 гб.)
2. Настроенный терминал доступа в сеть Интернет (в нашем случае терминал LinkStar)
3. Дистрибутив Ubuntu 9.10 Server
4. Наличие двух сетевых карт на компьютере (одна пойдет в терминал, одна в сеть)
Порядок наших действий:
1. Готовим размещение оборудования, подключаем терминал Linkstar
2. Устанавливаем операционную систему Ubuntu 9.10 Server на компьютер
3. Производим настройку сетевых интерфейсов
4. Организовываем NAT средствами NETFILTER (IPTABLES)
5. Организуем кеширование WEB страниц кеширующим прокси-сервером SQUID
6. Поднимаем DHCP (раздатчик IP адресов) на нашем компьютере
7. Подключаем клиентские компьютеры к шлюзу, делаем разграничение доступа на WEB страницы средствами SQUID
Статья расчитана на локальных улусных администраторов
1. Размещение оборудования
Предполагается что сеть (связка коммутатора с компьютерами) уже натянута, все кабели обжаты. Учить как протягивать сеть надеюсь не надо необходимости (при необходимости в разделе Ещё есть техника обжатия кабелей RJ45). Предпологается что кабели от одного коммутатора протянуты во все компьютеры в сети топологией "звезда" обжимом типа "прямой". Предпочтительней если шлюз, терминал, и коммутатор будут находится в одном помещении (импровизированная "серверная").
Требования к помещению:
1. Хорошая вентиляция, в то же время отутствие пыли (желательно прохладное помещение)
2. Наличие источника бесперебойного питания (предпочтителен APC Smart UPS 1500 Perfect)
3. Наличие устойчивого электропитания, и сетевого фильтра с предохранителем-кнопкой
Подключаем оборудование:
1. Настроенный терминал Linkstar подключаем к 2 шнурам приема и передачи которые идут в уже настроенную тарелку VSAT, электропитание включаем в UPS
2. Системный блок с 2 сетевыми интерфейсами аккуратно подключаем к монитору, клавиатуре (мышь нам не понадобится!), и к UPS.
3. Первый сетевой интерфейс (верхний) обжатый по принципу кросса подключаем к терминалу Linstar
4. Второй сетевой интерфейс обжатый обычным способом подключаем к коммутатору в любой порт
5. К UPS подключаем коммутатор, монитор (системный блок и Linkstar уже подрубали), включаем в сеть
6. Включаем Linkstar, ждем синхронизации, не трогаем.
7. Включаем системный блок, заходим в BIOS, проверяем первичную загрузку, ставим на CD (если нету)
2. Устанавливаем операционную систему Ubuntu 9.10 Server на компьютер
Итак, начинаем установку ОС. После того как поставили в BIOS загрузку с CD, происходит загрузка установочного диска
1. После загрузки компьютера с CD, появится меню выбора языка, выбираем язык на Русский
2. Выбираем "Установить сервер Ubuntu"
3. После выбора первого же пункта ("Установить сервер Ubuntu") установщик попросит настроить языковые параметры, выбираем Российская Федерация
4. Отказываемся от предложения автоопределения раскладки клавиатуры - Нет
5. Вручную указываем язык и раскладку - Russia, Russia
6. Задаем комбинацию клавиш для переключения раскладок, выбираем (я выбрал Alt+Shift)
7. Процесс пошел, идет установка...
8. Выйдет окошко "Настройка сети", выбираем основной как eth0 (это верхний интерфейс куда подрублен Linkstar ;D)
9. Указываем имя компьютера - именуем свой сервер (я именовал как server)
10. Выставляем часовой пояс - Якутск
11. Разметка дисков - выбираем "Авто - использовать весь диск и настроить LVM"
12. Подтверждаем
13. После завершения разбивки диска начинается непосредственно установка (5-10 минут)
14. Далее нас просят указать свое полное имя пользователя: (указываем свое. Например: Andrey E Stepanov)
15. Имя пользователя, под которым будем работать в системе - (я выбрал user)
16. Придумываем пароль, и пароль для root
17. Отказываемся от создания зашифрованной папки
18. Система спросит о настройках прокси-сервера, если таковой есть. А так как его нет, то просто жмем Enter
19. Настраиваем обновления - отказываемся (No automatic updates)
20. Далее остается выбрать заранее готовые наборы сервисов (web-сервер, принт-сервер и т.д.) - выбираем OpenSSH server, жмем Продолжить
21. После установки выбранных компонентов убунта вежливо попросит вынуть диск - Продолжить
22. Перезагрузка
23. После перезагрузки заходим в свою систему, не пугаемся чёрной консоли (всё нормально), логинимся под пользователем который мы указали в процессе установки, вводим пароль, видим открывшуюся консоль вида
user@server:~$
Это значит мы произвели вход в систему.
3. Производим настройку сетевых интерфейсов
После того как произвели вход в систему сразу начинаем настраивать интерфейсы. Вводим команду
user@server:~$ sudo su
Вводим пароль root который мы указали в процессе установки... Убеждаемся что консоль у нас стала иметь знак # в конце, и имя пользователя стало root
root@server:/home/user#
Дальше все команды мы будем производить от имени root. Так что дальше я буду писать только команды без root@server:/home/user# . Вводим команду
cd /etc/network/
Входим в директорию сетевых настроек, стираем старый файл интерфейсов
rm interfaces
Создаем но уже пустой файл
touch interfaces
Входим редактором
vi interfaces
Уже в редакторе сразу нажимаем клавишу i чтобы войти в режим редактирования. (В редакторе vi есть 2 режима - командный и режим редактирования. По умолчанию включен командный режим, поэтому надо каждый раз нажимать i чтобы редактировать файл).
Руками пишем следующий код в редакторе:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address ваш_IP_адрес_вычисленный_из_MAC_адреса_Linkstar
netmask маска_подсети_из_Linkstar
gateway шлюз_из_квитка_Linkstar
nameserver DNS_сервер_из_квитка_Linkstar
auto eth1
iface eth1 inet static
address 172.16.1.254
netmask 255.255.0.0
nameserver DNS_сервер_из_квитка_Linkstar
Пример правильного исполнения:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.177.175.2
netmask 255.255.0.0
gateway 10.177.175.1
nameserver 95.167.167.95
auto eth1
iface eth1 inet static
address 172.16.1.254
netmask 255.255.0.0
nameserver 95.167.167.95
Трижды проверяем правильно ли написали (это самый важный этап). Затем выходим из редактора: нажимаем Esc (выходим из режима редактирования), вводим wq! и нажимаем Enter. Выйдя обратно на консоль вводим команду:
/etc/init.d/networking restart
Это мы сделали рестарт сетевых сервисов. При успешном выполнении выйдет такое сообщение:
* Reconfiguring network interfaces... [ OK ]
Если выйдет:
* Reconfiguring network interfaces... [ failed ]
То снова и снова проверьте веденные данные в /etc/network/interfaces
Если же все прошло нормально то проверяем командой ifconfig адреса, выйдет примерно следующее:
eth0 Link encap:Ethernet HWaddr 40:61:86:ff:c9:ff
inet addr:10.177.175.2 Bcast:10.177.255.255 Mask:255.255.0.0
inet6 addr: fe80::4261:86ff:feff:c9ff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:38055137 errors:0 dropped:0 overruns:0 frame:0
TX packets:54431198 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3796819530 (3.7 GB) TX bytes:3559795487 (3.5 GB)
Interrupt:26 Base address:0x6000
eth1 Link encap:Ethernet HWaddr 00:c0:26:a1:30:1b
inet addr:172.16.1.254 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::2c0:26ff:fea1:301b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20695326 errors:0 dropped:0 overruns:0 frame:0
TX packets:17551894 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2473848775 (2.4 GB) TX bytes:96591615 (96.5 MB)
Interrupt:16 Base address:0xe800
Проверяем настройку интернета, сначала пингуем терминал
ping 10.177.175.1
Если пинг успешен - нажимаем Ctrl+C чтобы остановить пинговку, далее пингуем интернет ресурс:
ping ya.ru
PING ya.ru (77.88.21.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (77.88.21.3): icmp_seq=1 ttl=59 time=149 ms
64 bytes from www.yandex.ru (77.88.21.3): icmp_seq=2 ttl=59 time=149 ms
Если пинг есть - то интернет у нас есть.
Если не пингуется терминал - проверяем синхронизацию - если Sync мигает - то ждем еще, если не проходит синхронизация - звоним в техподдержку
Если не пингуется интернет ресурс, но пингуется терминал - проверяем настройки сетевых интерфейсов.
Настройка интерфейсов окончена.
4. Организовываем NAT средствами NETFILTER (IPTABLES)
Идем в директорию пользователя, в моем случае /home/user/
cd /home/user/
Создаем sh файл nat.sh
touch nat.sh
Редактором входим в него, заходим в режим редактирования
vi nat.sh
Пишем следующее:
#bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Сохраняем - Esc+wq! Enter
В консоли пишем sh nat.sh
Дальше, на одном из компьютеров в сети вводим IP адрес 172.16.1.1 маску 255.255.0.0 шлюз 172.16.1.254 DNS первичный 172.16.1.254 вторичный из квитка Linkstar (в моем примере 95.167.167.95). Пингуем наш шлюз, если получен ответ - пробуем зайти браузером на какую нибудь Интернет страничку. Если успешно - то приступаем к дальнейшей настройке. Если интернета нету - проверяем настройки интерфейсов, звоним в техподдержку.
NAT средствами NETFILTER выполнен
5. Организуем кеширование WEB страниц кеширующим прокси-сервером SQUID
Для начала создадим директорию кеша
mkdir /cache
Дадим ей доступ полный на запись
chmod 777 -R /cache
Зачастую спутниковый канал бывает очень медленным, и тем более за него трафик капает. Для экономии, и для акселерации загрузки WEB страниц будем ставить кеширующий прокси-сервер SQUID, который будет кешировать WEB траффик. Для того чтобы не париться с забиванием параметров прокси в браузер сделаем его прозрачным.
На шлюзе вводим команду
sudo apt-get install squid squid-common
дальше ждем пока squid установится.
После установки переходим в директорию squid
cd /etc/squid/
Создаем для начала файл acl.txt
touch acl.txt
Cтираем существующий конфигурационный файл (если есть). В общем содержимое директории смотрим командой ls. Если нет - создаем
touch squid.conf
Заходим, редактируем
vi squid.conf
Пишем конфигурацию такую:
http_port 3128 transparent
cache_mem 32 MB
maximum_object_size 8092 KB
ipcache_size 4096
fqdncache_size 8192
cache_dir ufs /cache 512 16 256
client_lifetime 1 day
acl all src 0.0.0.0/0.0.0.0
acl cantora src "/etc/squid/acl.txt"
http_access allow cantora
http_access deny all
То есть этим самым мы сделали так:
http_port 3128 transparent - сделали порт 3128 (прокси-порт squid) прозрачным
cache_mem 32 MB - ёмкость памяти кеша 32 мегабайта
cache_dir ufs /cache 512 16 256 - указали директорию для кеша squid
acl all src 0.0.0.0/0.0.0.0 - создали акцесс лист "все - all" (лист доступа)
http_access deny all - запретили акцесс листу all доступ (то есть запретили есть на прокси кому попало)
acl cantora src "/etc/squid/acl.txt" - создали акцесс лист "cantora" (в /etc/squid/acl.txt мы запишем IP адреса которые выдадим DHCP сервером столбиком)
http_access allow cantora - разрешили доступ акцесс листу "cantora" в прокси
Сохраняем - Esc+wq! Enter
Вводим команду
squid -z
Начнется формирование кеша в /cache
После формирования вводим команду /etc/init.d/squid start
После старта squid в /etc/squid/acl.txt вводим ip адрес 172.16.1.1 (тот комп с которого проверяли инет через iptables), затем вводим команду
/etc/init.d/squid reload
Затем на компе с ip 172.16.1.1 в настройках обозревателя вводим адрес нашего шлюза - 172.16.1.254, порт 3128, открываем браузер, убеждаемся что интернет странички открываются.
Затем на шлюзе делаем заворот на squid, чтобы все входящие подключения которые используют 80 порт заворачивались на 3128 (squid). Для этого на /home/user/nat.sh добавляем в редакторе
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Значит полный конфиг выглядит вот так:
#bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Затем выходим из редактора, вводим команду iptables -F (для очистки правил), затем снова вводим sh nat.sh
Далее на компьютере где проверяли убираем с настроек браузера адрес нашего прокси с портом, просто так вводим интернет-адрес, убеждаемся что страничка открывается.
Далее делаем так чтобы файл nat.sh запускался автоматически, для этого в файле /etc/init.d/rc.local в самом конце добавляем:
sh /home/user/nat.sh
На этом кеширующий прокси-сервер squid настроен.
6. Поднимаем DHCP (раздатчик IP адресов) на нашем компьютере
Для того чтобы на конторские компьютеры не вбивать каждый раз ip адреса сделаем автоматический раздатчик ip адресов.
Будем использовать dhcp3
apt-get install dhcp3-server
установился... Теперь:
vi /etc/dhcp3/dhcpd.conf
Подправляем конфиг:
# A slightly different configuration for an internal subnet.
# адрес сети и маска
subnet 172.16.1.0 netmask 255.255.0.0 {
# диапазон адресов для клиентов
range 172.16.1.2 172.16.1.50;
# адрес dns сервера (по квитку)
option domain-name-servers 95.167.167.95;
# option domain-name "internal.example.org";
# шлюз
option routers 172.16.1.254;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
}
...
Выходим: Esc+wq! Enter
рестарт:
/etc/init.d/dhcp3-server restart
Включаем компьютеры, все должны получить IP адреса из того диапазона который мы задали. Эти IP адреса прописываете в /etc/squid/acl.txt столбиком типа:
172.16.1.2
172.16.1.3
172.16.1.4
172.16.1.5
172.16.1.6
и тд.
На этом DHCP настроен.
7. Делаем разграничение доступа на WEB страницы
В /etc/squid/ создайте файл badsites.txt
touch /etc/squid/badsites.txt
Редактируем
vi /etc/squid/badsites.txt
Добавляем сайты к которым вы хотите ограничить доступ:
http://vkontakte.ru/
http://youtube.com/
и тд.
Далее заходим в /etc/squid/squid.conf, делаем акцесс-лист Bad
acl Bad dstdomain "/etc/squid/badsites.txt"
http_access deny Bad
Выходим Esc+wq! Enter, делаем релоад
/etc/init.d/squid/reload
Все.
Делаем доступ в Интернет для сети
Комментарии (10)
-
Вот это по-настоящему полезный пост! Побольше бы таких самописных постов.
Наверно стоит добавить категорию FAQ. -
IPCop а про него?
ему то и пентиум 2 хватает с лихвой и память не меньше 128 -
все гораздо проще
люникс не нужен
пойдет и винХП
на компьютер с выходом в инет ставим еще 1 сетевуху для локалки, присваиваем этой сетевухе 192.168.0.1 маска 255.255.255.0 , а в остальных компьютерах в локалке ставим IP начианя любую из 192.167.0.Х вместо Х любую цифу от 2 до 255
на всех компьютерах так же ставишь основной шлюз IP 192.168.0.1 (локальный IP компьютера с выходмо в инет)
в компьютере с выходом в инет, заходим настройка сети, там находим сетевое подключение выхода в инет (не которую смотрит в локалку) , кликаем правой кнопкой мыши и заходим в свойство, там гдето во вкладках ставите галку, дать общий доступ выхода в интернет и все
в моих описаниях не должно быть ничего непонятного :)))) раз уж вы даже решили разрбиратся в крякозябрях люникса :Р
за пол часа легко можно настроить, даже меньше :) -
не думаю, что короткий путь самый лучший путь. Дело в том что я выбрал бы линукс в качестве шлюза чем какой нибудь виндоуз. Спроси любого админа
-
Не-не-не, windows в качестве сервера - это просто не по фен-шуй'ю.
-
еще проще купить роутер, включить на нем dhcp и вбить данные провайдера )
-
конечно линух..., но ска не по возможности поднять впн сервер, приходиться прыгать с бубном под окном 2003..,
-
а чо сложного поднять PPTP VPN? 0_0 в инете мануалов же дохрена. Используй пакет ppp на ubuntu. Так и введи в гугле - howto install pptp server ubuntu =)
-
а у меня почему-то привычка mpd5 ковырять для всякого рода VPN)
-
mpd5 хорош тем что универсал =) может выступать в роли и сервера и клиента. А для линухов хорош pptpd