Как Я Раздавал Интернет Через Ubuntu

И снова здрасте. Наконец-то я освободился от навалившихся дел, учебы и прочих неприятностей жизни… Некоторое время назад, мой уже бывший интернет провайдер(не будем его называть) прекратил выполнять свои обязательства договора и мы с ним попрощались  Сейчас уже все хорошо, мы нашли отличную альтернативу. Сегодня я хотел бы поведать Вам, о своей локальной сети, ее устройство, в общем, что где, для чего и зачем Нус начнем… Сразу хочу Вам продемонстрировать схему сети, чтобы проще было ориентироваться, в общем вот она: local

Как видно из рисунка, интернет с роутером находится не у меня в квартире(если бы был у меня, статьи бы не было  ). У друга все просто, интернет передается по лану и ноуту по wi-fi. Кабель от роутера идет ко мне в компьютер(соединили шестой и первый этаж в свое время). Остается ноутбук, забрал у друга сетевую карту с кабелем, соеденил ноутбук с компьютером в сеть(Можно было бы конечно купить wi-fi плату, но с деньгами напряг). Сделал в Windows 7 мост между 2 сетевыми картами, все, у ноута интернет + локалка, ничего сложного, НО моя основная система Ubuntu, а не 7… вот теперь начинается самое интересное  Я очень долго ломал голову, как сделать, что-то типо моста в Windows, только в Ubuntu… Мои попытки с bridge-utils были четны, интернет ни как не хотел раздаваться… Тогда начался долгий поиск нужного и рабочего, но как говорится кто ищет, тот всегда найдет и мне повезло  Для раздачи интернета в моем случае потребовалось 2 сетевые карты, сама Ubuntu и настройки которые я приведу ниже. Перед любым редактированием файлов, я рекомендую Вам делать бэкап изменяемых файлов  Адрес роутера 192.168.0.1, кабель от него втыкается в первую сетевую плату и называется eth0. Вторая сетевая плата, которая будет раздавать интернет, называется eth1. Открываем файл interfaces:

sudo gedit /etc/network/interfaces

И приводим его к такому виду:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

post-up /etc/nat-up

Надеюсь тут все понятно, первый блок, там где auto eth0, это IP для первой карты(интернет от роутера). Второй блок auto eth1, это IP для второй карты(интернет на ноут). Сохраняем файл. Теперь в консоли открываем файл resolv.conf

sudo gedit /etc/resolv.conf

Это файл, где нужно прописать DNS, во всех мануалах советуют прописать там DNS-ы провайдера. В нашей ситуации мы пишем DNS роутера:

nameserver 192.168.0.1

Больше там ничего быть не должно. Теперь перезагружаем сетевые интерфейсы:

sudo /etc/init.d/networking restart

Не обращайте внимания на ошибки консоли, говорящие, что она не может найти файл nat-up, мы его ещё не создали. После перезагрузки интернет на компьютере должен функционировать(скоро появится и на ноутбуке). Введенные Вами IP в файл interfaces вы можете проверить выполнив команду ifconfig в консоли. Теперь устанавливаем NAT:

sudo apt-get install dnsmasq

Он нам понадобится для одной записи Так же установим Proxy:

sudo apt-get install squid

Теперь создаем файл автозагрузки:

sudo touch /etc/nat-up

Чуть выше я говорил про него Делаем файл исполняемым:

sudo chmod +x /etc/nat-up

Останавливаем Прокси-сервер:

sudo /etc/init.d/squid stop

И переходим к редактированию файла nat-up. Открываем:

sudo gedit /etc/nat-up

И вставляем в него:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.0.2
iptables -t nat -A PREROUTING -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-port 3128

Сохраняем. Будьте внимательны при его редактирование. Открываем файл dnsmasq.conf:

sudo gedit /etc/dnsmasq.conf

Находим строчку #listen-address=, стираем # и приводим строку к такому виду:

listen-address=127.0.0.1, 192.168.1.1

Теперь открываем файл squid.conf:

sudo gedit /etc/squid/squid.conf

Здесь нужно будет изменить несколько значений, поэтому используйте поиск(Ctrl+f). Ищем http_port 3128, просто добавляем transparent, получаем:

http_port 3128 transparent

Ищем cache_dir ufs /var/spool/squid, добовляем/изменяем на 30000 16 256, получаем:

cache_dir ufs /var/spool/squid 30000 16 256

Ключевой параметр 30000 это 30 гигабайт под кеш, можете ставить как хотите. Ищем error_directory /usr/share/squid/errors/en меняем на ru, получаем:

error_directory /usr/share/squid/errors/ru

Ищем memory_pools on, убираем #. Ищем memory_pools_limit, ставим параметр 256 MB, получаем:

memory_pools_limit 256 MB

Это сколько оперативной памяти, Вы готовы выделить для прокси-сервера, меньше можно, больше не уверен. Находим http_access allow localnet и http_access allow localhost, просто раскоментируем(удаляем #). Ищем acl localnet src 192.168.0.0 и меняем на acl localnet src 192.168.1.0/24, получаем:

acl localnet src 192.168.1.0/24

Но это для моих условий сети 192.168.1.0-192.168.1.254. P.s все параметры, которые были изменены в файле squid.conf должны быть раскоментированны! Сохраняем файл, закрываем консоль, перезагружаемся. Настройка Ubuntu завершена. Теперь настроем локальную сеть в Windows 7:

Теперь оба компьютера соединены в локальную сеть и на ноутбуке есть интернет. Если интернета нет, то ищем где ошиблись. Если так и не получается, пишем в комментарии, попробую помочь :). Думаю Вы понимаете, что не обязательно должен быть ноутбук, обычная стационарная машина так же подойдет. Это просто конкретный пример, моих настроек из моей локальной сети. Автор статьи — Монахов Сергей Спасибо за предоставленную статью