[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Software » System settings » Интернет шлюз на Ubuntu Server (Настраиваем роутер NAT + DHCP + Squid3)
Интернет шлюз на Ubuntu Server
EsmertecДата: Среда, 05.04.2017, 20:49 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 47
Награды: 2
Репутация: 32767
Статус:
Рекомендую использовать только стабильные релизы операционной системы, в ubuntu 16.xx сетевые интерфейсы имеют не стандартные названия, поэтому лучше сразу запомнить, либо записать имя адаптера, чтоб не получить проблем в дальнейшем.

После установки системы заходим под рут пользователем для удобства
Код
sudo -s

И сразу зададим нашим интерфейсам статические IP адреса, конфиг с настройками LAN адаптеров хранится в /etc/network/interfaces, откроем его любым удобным для вас редактором и пропишем "статику"
Код
nano /etc/network/interfaces

в редакторе нужно изменить следующее:
Код
auto eth0
    iface eth0 inet static
        address 172.18.0.106 -
        netmask 255.255.240.0
        gateway 172.18.0.1
        dns-nameservers 172.18.0.1 208.67.222.222

auto eth1
    iface eth1 inet static
        address 192.168.0.100
        netmask 255.255.255.0

post-up /etc/nat


где eth0 - интерфейс смотрящий во внешнюю сеть, в него подключен кабель провайдера, eth1 - смотрит внутрь локальной сети, где находятся ПК нуждающиеся в интернете =). post-up /etc/nat команда запуска правил iptables после перезагрузки сервера, пока этого файла в системе нет, его создадим по позже. Адреса провайдера по которому раздается интернет.

после настройки сети нужно перезапустим сеть:
Код
service networking restart


Если все сделано правильно, на сервере должен появиться интернет. После чего следует обновить пакеты на сервере и установить все необходимое для реализации задачи:

Код
apt-get update
apt-get upgrade
apt-get install mc ssh dnsmasq squid3


Настройка NAT и брандмауэра

Для начала нам нужно создать файл NATа для правил iptables:

Код
touch /etc/nat


после чего откроем этот файл в редакторе и зададим правила:

Код
#!/bin/sh

#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

#Разрешаем траффик на lo
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

#Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

#Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT


Рекомендую подключиться к серверу с помощью Putty по SSH, и просто скопировать содержимое, чтоб уменьшить к минимуму вероятность ошибок при вводе правил, это важно!

Сохраним изменения и дадим нашему файлу права на исполнение:

Код
chmod +x /etc/nat


перезагрузим сервер:

Код
reboot

Теперь если вручную задать сетевые настройки для рабочей станции, указав в качестве шлюза наш роутер и любой доступный DNS-сервер, то не ней должен появиться доступ в интернет.

Настраиваем DHCP

После установки открываем /etc/dnsmasq.conf, находим, раскомментируем и изменяем следующим образом строку, чтобы разрешить серверу принимать DNS запросы из внутренней сети.:
Код
listen-address=127.0.0.1, 192.168.0.100

192.168.0.100 - это IP нашего роутера! В качестве DHCP сервера выступит уже установленный dnsmasq. Настроить его не просто, а очень просто, для чего снова открываем sudo nano /etc/dnsmasq.conf, находим, раскомментируем и изменяем следующим образом строку:
Код
dhcp-range=192.168.0.2,192.168.0.99,255.255.255.0,120h

192.168.0.2 - IP с которого будет начинаться раздача
192.168.0.99 - по какой IP будет раздача по DHCP нашим роутером
255.255.255.0 - тут все понятно, это маска подсети с нашего роутера
120h - время аренды IP по стандарту 12 часов

Перезапусим сервис:

Код
service dnsmasq restart

После чего хосты внутренней сети будут получать все сетевые настройки автоматически.

Настраиваем кэширующий прокси-сервер Squid
Останавливаем прокси-сервер и приступаем к настройке:
Код
service squid3 stop

Открываем /etc/squid3/squid.conf, находим и корректируем следующие строки, не забыв их раскомменитровать:

Код
acl localnet src 192.168.0.0/24


Затем, спускаясь далее по конфигурационному файлу найдем секцию отвечающую за правила доступа и убедимся, что она содержит следующие правила:

Код
http_access allow localnet
http_access allow localhost
http_access deny all


Теперь укажем порт, интерфейс и режим работы прокси-сервера.

Код
http_port 192.168.0.100:3128 intercept


Перейдем к указанию параметров кэша. Зададим доступный объем памяти и укажем максимальный объем кэшированного объекта в памяти:

Код
cache_mem 1024 MB
maximum_object_size_in_memory 512 KB


После чего укажем размер дискового кэша и его расположение:

Код
cache_dir ufs /var/spool/squid3 2048 16 256


Следующий параметр задает максимальный размер объекта в дисковом кэше:

Код
maximum_object_size 4 MB


Далее по файлу укажем место хранения логов и количество ротаций:

Код
access_log daemon:/var/log/squid3/access.log squid
logfile_rotate 31


Перед тем как перезапускать службу выполним проверку файла конфигурации:

Код
squid3 -k check


Если команда отрабатывает без вывода - ошибок нет, в противном случае изучаем вывод и исправляем допущенные ошибки. После этого перезапустим службу, чтобы применить внесенные изменения.

Код
service squid3 restart

В том случае, когда были изменены параметры кэша следует его перестроить:

Код
service squid3 stop
squid3 -z
service squid3 start

Затем в /etc/nat добавляем правило заворачивающее http-трафик на squid:

Код
# Заворачиваем http на прокси
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.100:3128


Схема подключения будет выглядеть следующим образом:


Версия под PPoE, отличается настройками интерфейса (/etc/network/interfaces) и NAT (/etc/nat) выглядит примерно вот так:
/etc/network/interfaces:
Код
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
dns-nameservers 212.120.160.130 212.120.173.34

post-up /etc/nat

/etc/nat
Код
#!/bin/sh

# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT

# Включаем NAT
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

# Разрешаем ответы из внешней сети
iptables -A FORWARD -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i ppp0 -o eth0 -j REJECT

# Заворачиваем http на прокси
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.100:3128

Для подключения к сети провайдера вводим команду:
Код
sudo pppoeconf

в котором увидите цветное окно, где у вас попросят логин и пароль для подключения к интернету. В этом варианте у вас на самодельном роутере будет 1 сетевая карта. Схема подключения будет выглядеть следующим образом:
Прикрепления: 9701216.png(7.7 Kb) · 2958867.png(7.8 Kb)
 
Форум » Software » System settings » Интернет шлюз на Ubuntu Server (Настраиваем роутер NAT + DHCP + Squid3)
  • Страница 1 из 1
  • 1
Поиск: