Ubuntu → Настройка шлюза локальной сети, на базе Ubuntu 12.04
     Если у вас есть локальная сеть, то для ее клиентов необходимо предоставить доступ в интернет. Для обеспечения данной возможности необходимо настроить шлюз, который будет принимать запросы клиентов и пересылать их во внешний мир, а поступающие ответы, передавать обратно.
В этой статье, я расскажу как настроить шлюз для локальной сети на Ubuntu, схема его работы очень простая, но и защиты он не обеспечивает. Существует распространенное заблуждение что NAT ( Network Address Translation -транслятор сетевых адресов) обеспечивает защиту от внешних угроз, но это далеко не так, у него совершенно другое назначение, фактически это дверь, которая открывается в обе стороны, со всеми вытекающими последствиями…
Если есть необходимость в повышении уровня безопасности, а такая необходимость есть всегда, то тут нужно настраивать «фаерволл», я намеренно не привожу никаких правил на этот случай, т.к. они настраиваются исходя из конкретных задач.
В целом, данная статья планировалась как база, для статей на ближайшие пару лет, на ее основе можно развернуть целую кучу серверов, фактический, данный сервер может обрастать функционалом, исходя из ваших задач и потребностей.
Для работы нам понадобится
1) Система с двумя сетевыми картами-которая будет выполнять функцию шлюза.
2) Клиентский ПК, с которого мы будем тестировать работу шлюза.
Схема работы:

Предполагается, что операционная система у вас установлена, на сервере который имеет 2 сетевых интерфейса.
eth0 — подключение к интернет. (может получать IP адрес динамически, может иметь статический, я опишу оба варианта)
eth1 — подключение к локальной сети, будет иметь статический IP 192.168.10.1 и маску 255.255.255.0
Также, для тестирования нам понадобится клиентская машина, которая будет находиться в локальной сети (операционная система значения не имеет).
Первым делом, настраиваем сетевые интерфейсы сервера:
Поднимаем права до root
Вводим пароль.
Редактируем настройки сетевых интерфейсов:
Навастриваем eth0 (по которому осуществляется подключение к интернет)
Вариант №1- Получение IP по DHCP от провайдера:
Вариант №2-Статический IP
Где:
Вместо XXX.XXX.XXX.XXX вписываем IP адрес, который мы получили от провайдера
Вместо 255.YYY.YYY.YYY -выписываем маску подсети.
Ну и вместо ZZZ.ZZZ.ZZZ.ZZZ вписываем IP адрес DNS сервера.
Настраиваем eth1 (по которому подключается локальная сеть)
В результате действий у на должен получиться файл interfaces, примерно, следующего содержания:
Сохраняем изменения, выходим.
Перезапустим сеть:
Из написанного, думаю понятно, что в локальной сети адрес шлюза и dns сервера, будет 192.168.10.1.
Переходим на к нашему тестовому клиенту, т.к. у нас в сети нет DHCP сервера, то IP адрес мы будем назначать в ручную.
Присваиваем клиенту:
IP 192.168.10.2
маску подсети 255.255.255.0
шлюз 192.168.10.1
DNS 192.168.10.1
пробуем с клиента принговать 192.168.10.1 — запросы должны бегать нормально.
Переходим на наш шлюз.
Установим пакет dnsmasq, он необходим для перенаправления DNS запросов, вышестоящим серверам.
Возвращаемся к клиенту, выполняем на нем
В ответ подучаем:
Настроим ее:
Первым делом, разрешаем перенаправление пакетов:
необходимо найти строку и снять с нее комментарий:
Сохраняем изменения и выходим
Теперь, нам необходимо добавить правила для маршрутизации пакетов:
Добавим перед строкой exit 0
Значение можно разобрать самостоятельно (будет в качестве домашнего задания), на форуме ubuntu был отличный FAQ по настройке iptables.
Сохраняем изменения, и перезагружаем сервер
Дождемся загрузки сервера и перейдя к клиентской системе, пробуем открыть сайт Mail.ru-все должно открываться!
Вот так, настраивается шлюз для локальной сети. Это, одно из самых простых решений.
В этой статье, я расскажу как настроить шлюз для локальной сети на Ubuntu, схема его работы очень простая, но и защиты он не обеспечивает. Существует распространенное заблуждение что NAT ( Network Address Translation -транслятор сетевых адресов) обеспечивает защиту от внешних угроз, но это далеко не так, у него совершенно другое назначение, фактически это дверь, которая открывается в обе стороны, со всеми вытекающими последствиями…
Если есть необходимость в повышении уровня безопасности, а такая необходимость есть всегда, то тут нужно настраивать «фаерволл», я намеренно не привожу никаких правил на этот случай, т.к. они настраиваются исходя из конкретных задач.
В целом, данная статья планировалась как база, для статей на ближайшие пару лет, на ее основе можно развернуть целую кучу серверов, фактический, данный сервер может обрастать функционалом, исходя из ваших задач и потребностей.
Для работы нам понадобится
1) Система с двумя сетевыми картами-которая будет выполнять функцию шлюза.
2) Клиентский ПК, с которого мы будем тестировать работу шлюза.
Схема работы:

Предполагается, что операционная система у вас установлена, на сервере который имеет 2 сетевых интерфейса.
eth0 — подключение к интернет. (может получать IP адрес динамически, может иметь статический, я опишу оба варианта)
eth1 — подключение к локальной сети, будет иметь статический IP 192.168.10.1 и маску 255.255.255.0
Также, для тестирования нам понадобится клиентская машина, которая будет находиться в локальной сети (операционная система значения не имеет).
Первым делом, настраиваем сетевые интерфейсы сервера:
Поднимаем права до root
sudo su
Вводим пароль.
Редактируем настройки сетевых интерфейсов:
nano /etc/network/interfaces
Навастриваем eth0 (по которому осуществляется подключение к интернет)
Вариант №1- Получение IP по DHCP от провайдера:
auto eth0
iface eth0 inet dhcp
Вариант №2-Статический IP
auto eth0
iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask 255.YYY.YYY.YYY
gateway XXX.XXX.XXX.XXX
dns-nameservers ZZZ.ZZZ.ZZZ.ZZZ
Где:
Вместо XXX.XXX.XXX.XXX вписываем IP адрес, который мы получили от провайдера
Вместо 255.YYY.YYY.YYY -выписываем маску подсети.
Ну и вместо ZZZ.ZZZ.ZZZ.ZZZ вписываем IP адрес DNS сервера.
Настраиваем eth1 (по которому подключается локальная сеть)
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
В результате действий у на должен получиться файл interfaces, примерно, следующего содержания:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask 255.YYY.YYY.YYY
gateway XXX.XXX.XXX.XXX
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
Сохраняем изменения, выходим.
Перезапустим сеть:
/etc/init.d/networking restart
Из написанного, думаю понятно, что в локальной сети адрес шлюза и dns сервера, будет 192.168.10.1.
Переходим на к нашему тестовому клиенту, т.к. у нас в сети нет DHCP сервера, то IP адрес мы будем назначать в ручную.
Присваиваем клиенту:
IP 192.168.10.2
маску подсети 255.255.255.0
шлюз 192.168.10.1
DNS 192.168.10.1
пробуем с клиента принговать 192.168.10.1 — запросы должны бегать нормально.
Переходим на наш шлюз.
Установим пакет dnsmasq, он необходим для перенаправления DNS запросов, вышестоящим серверам.
apt-get install dnsmasq
Возвращаемся к клиенту, выполняем на нем
nslookup mail.ru
В ответ подучаем:
Сервер: UnKnownОтлично, разрешение имен работает, но если мы попробуем открыть страницу mail.ru, то у нас ничего не получится, потому что не настроена маршрутизация пакетов.
Address: 192.168.10.1
Имя: mail.ru
Addresses: 94.100.191.201
94.100.191.204
94.100.191.203
94.100.191.202
Настроим ее:
Первым делом, разрешаем перенаправление пакетов:
nano /etc/sysctl.conf
необходимо найти строку и снять с нее комментарий:
net.ipv4.ip_forward=1
Сохраняем изменения и выходим
Теперь, нам необходимо добавить правила для маршрутизации пакетов:
nano /etc/rc.local
Добавим перед строкой exit 0
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Значение можно разобрать самостоятельно (будет в качестве домашнего задания), на форуме ubuntu был отличный FAQ по настройке iptables.
Сохраняем изменения, и перезагружаем сервер
reboot
Дождемся загрузки сервера и перейдя к клиентской системе, пробуем открыть сайт Mail.ru-все должно открываться!
Вот так, настраивается шлюз для локальной сети. Это, одно из самых простых решений.
177 комментариев
, где ZZZ.ZZZ.ZZZ.ZZZ — IP-адрес DNS-сервера, выданный провайдером.
offtopic: Может еще и broadcast прописать?
auto eth0
iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask 255.YYY.YYY.YYY
dns-nameservers ZZZ.ZZZ.ZZZ.ZZZ
gateway XXX.XXX.XXX.XXX
Как подсказал zsymbol
Еще хочется добавить, что после обновлении с 11.10 до 12.04 командой:
sudo do-release-upgrade
настройки сетевой карты не менялись (dns-nameservers не прописывал) — сервер работает нормально, странно конечно, но работает.
Вопрос следующий. У меня дома стоит Ubuntu 12.04, мне надо что бы с соседнего компьютера, на котором стоит Windows 7 и у которого есть доступ в интернет, получить как раз этот доступ в интеренет для моей машинки, с Ubuntu. На компьюторе с виндоус две сетевые карты, через одну он соединен с шлюзом провайдера, а через второй с моим компьютером.
Расшарил соединение к интернету на виндоус 7, на второй сетевухе прописал в ручную ип 192.168.0.1, маску 255.255.255.0. На убунту в настройках соединения написал ип адрес 192.168.0.2, маска этаже, шлюз 192.168.0.1 и днс 192.168.0.1. Потом выбераю на рабочем столе это соединение, выходит сообщение «соединение не доступно», примерно так. К тому же не пингуются машины.В свое время что бы настроить интернет для двух виндоус, пришлось прыгать с бубном.
Вопрос остался открытым =(
З.Ы. Ваш вопрос, не связан с темой данного поста, по этому, чтобы не флудить не по теме, пишите в личку…
не знаю почему но не идет по этой настройке интернет к пользователям. Все сделал как описано у Вас сам сервер подрубился к интернету пользовательская машина пингует 2-ю сетевуху eth1! В чем может быть проблема (интернет получаю с подобного сервера только на нем версия 8 ubunt)Помогите пожалуйста очень нужно!
Пользователи локальной сети могут подключаться к вашему серверу?
От ваших пользователей ходят пинги к серверу который раздает интернет вашему серверу?
помогла вот эта статья Настройка кеширующего DNS сервера (BIND) для локальной сети.
на ваши вопросы ответ да все пинговалась интернет был только на сервере.
Подскажите пожалуйста будет ли статья о безопасности и настройки правил пользования клиентам.
и еще вопрос какой программой лучше удаленно администратировать сервер?
Заранее спасибо!
Я работаю через SSH из бесплатных Putty вам хватит за глаза, на ее основе есть ещё целая куча клиентов, тут как говорится-на вкус и цвет:
en.wikipedia.org/wiki/Comparison_of_SSH_clients
у меня стоит ubuntu 12.04-desctop не могу настроить на нем шлюз, причина следующая:
1. стоит router dir-320 (IP 192.168.1.1) настроенный на ppppoe, сам сервер, 2 сетевые карты на ubuntu 12.04-desctop (IP 192.168.1.100), и клиент с ОС Windows 7…
2. сетевая карта etho с адресом 192.168.1.100 смотрит в сторону dir-320 вроде настроил интернет есть
3. сетевая карта eth1 с адресом 192.168.0.1 смотрит в локальную сеть и связана с клиентом 192.168.0.2
4. на клиенте адреса от сервера получаю IP 192.168.0.2 mask 255.255.255.0 шлюз 192.168.0.1 и DNS 192.168.0.1, интернет есть (сразу стает в работу Skype и знак сети не показывает отсутствие интернета) но сайты не открывает :(
Когда дописываю на клиенте (Windows7) вручную DNS 192.168.1.1 все работает :)
Подскажите в чем может быть ошибки, в каком направлении их искать?
Заранее благодарен!!!
Microsoft Windows [Version 6.1.7601]
© Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\Денис>nslookup mail.ru
╤хЁтхЁ: UnKnown
Address: 192.168.0.1
*** UnKnown не удалось найти mail.ru: Query refused
C:\Users\Денис>
╤хЁтхЁ: UnKnown
Address: 192.168.0.1
*** UnKnown не удалось найти 8.8.8.8: Query refused
C:\Users\Денис>ping 8.8.8.8
Обмен пакетами с 8.8.8.8 по с 32 байтами данных:
Ответ от 8.8.8.8: число байт=32 время=75мс TTL=50
Ответ от 8.8.8.8: число байт=32 время=77мс TTL=50
Ответ от 8.8.8.8: число байт=32 время=75мс TTL=50
Ответ от 8.8.8.8: число байт=32 время=72мс TTL=50
Статистика Ping для 8.8.8.8:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 72мсек, Максимальное = 77 мсек, Среднее = 74 мсек
C:\Users\Денис>
Доступ в интернет есть, но не работает DNS, пакет dnsmasq установлен?
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
тоже
На самом шлюзе интернет работает?
Но интернет работает
root@server-desktop:~# nano /etc/network/interfaces
auto lo
iface lo inet loopback
# Provider network
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-maneservers 192.168.1.1
# Local network
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
root@server-desktop:~# apt-get install dnsmasq
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Уже установлена самая новая версия dnsmasq.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 4 пакетов не обновлено.
C:\Users\Денис>nslookup mail.ru
╤хЁтхЁ: UnKnown
Address: 192.168.0.1
*** UnKnown не удалось найти mail.ru: Query refused
C:\Users\Денис>
nano /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
exit 0
Попробуйте просто закопипастить как уменя!
Если до завтра проблему сами решить не сможете, стучитесь в аську, подключусь к вам через TeamViewer, думаю что сможем победить…
еще я настроил в файле sudo nano /etc/dnsmasq.conf строки смотрящие в LAN interface=eth1 и dhcp-range=192.168.100.50,192.168.100.250,12h после этого заработал DHCP и начал раздавать адреса…
благодарен вам что не остались равнодушны и откликнулись, спасибо!!!
Рад что у вас все заработало!
Если в теории, то можно основную массу пользователей пустить через проксю- прописав ее в браузере, а другим ходить-чтобы запросы перенаправлялись через iptables
Настроил все так как у Вас тут написано. Но не проходят пинги с клиентской машины на сервер. Сервер настраиваю в первый раз, т.е новичок в этом деле. Чтобы добавить более детальную информацию не знаю как скопировать информацию с консоли )
Вы никаких правил в iptables не создавали чтобы рубить ICMP пакеты?
Как настроить убунту для использования 2х шлюзов от разных провайдеров?
На каждый шлюз ставить свою сетевую карту и для каждого клиента в настройках МАС прописываем использование конкретного шлюза?
Я давно собираюсь написать на эту тему статью, но что-то все руки не доходят.
компьютер-шлюз один и есть два провайдера и надо одним разрешить одного провайдера другим другого
и еще сверху чтоб работали все примочки DNS DHCP из других Ваших статей.
Свежая статья была бы актуальна, т.к. у многих есть резервные каналы интернета.
бегать с настройками роутеров и все собирать в кучу, чтоб еще и локальная сеть работала — грустно как-то, хочется в одном месте чтоб был.
спасибо за труды!!!
Но думаю что она будет одной из 3х, которая у меня сейчас в планах.
можно же сделать как дополнение к этой статье, описать только нужные изменения?
Я б хотел задать пару вопросов:
Сейчас настроил apache на своем сервачке, настроил два виртуал хоста. В файле /etc/hosts прописал им такие алиасы
С клиентской машины в браузере ввожу site1.dev он не открывает (тож самое с site2). Я так понимаю мне следует Ставить Bind dns что бы у меня доступ к моим виртуал хостам был по алиясам, которые я прописал в /etc/hosts на сервере?
Буду рад любой информации, так как время поджимает.
У вас полная каша в голове, нафига вы добавили записи в hosts на шлюзе?! Чтобы не поднимать bind, нужно добавлять запись в hosts на клиенте, а то вы добавили запись на loopback даже если клиент ее получит от сервера, то начнет искать это адрес у себя, локально.
и в /etc/network/interfaces в конце прописать
pre-up iptables-restore > /etc/network/if-up.d/iptables.rules?
Или это не правильно?
не pre-up iptables-restore > /etc/network/if-up.d/iptables.rules
_а pre-up iptables-restore < /etc/network/if-up.d/iptables.rules
в rc.local потому что они гарантированно отрабатывают, а вот если добавлять в фаерволл что-то подглючивало, т.е. после перезагрузки почему-то не применялись.
Я настраивал шлюз (ubuntu 12.04) подобным образом, но у меня появилась проблема. Удалось ее максимально локализовать.
После настройки интерфейсов и разрешения форвардинга пакетов (net.ipv4.ip_forward=1 в /etc/sysctl.conf) машины в локалке получают доступ в интернет на максимальной скорости (8мбит/сек). А если выполнить команду: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE, скорость подает почти в 2 раза.
Пробовал на виртуалках и на реальном железе.
Не подскажете, что это может быть?
Если выполнить iptables -t nat -F, то скорость сразу становится максимальной
Спасибо за интересную статью.
Подскажите пожалуйста, возможно ли применить её, если у меня стоит wlan0 и eth0?
Wlan0 имеет статический IP и подключен к интернету через роутер, а eth0 по замыслу должен раздавать интернет через маршрутизатор на локальные машины.
Возможно ли реализовать шлюз между wlan0 и eth0 просто подставив мои wlan0 и eth0 вместо eht0 и eht1 соответственно из Вашего примера?
Спасибо за статью… все заработало… но есть один вопрос…
Есть рабочая станция с Ubuntu 12.04
две сетевые карты eth0 и eth1
eth0 по DHCP получает адрес от провайдера 176.х.х.х
eth1 имеет статический IP 192.168.10.1
и к eth1 подключено проводом устройство с IP 192.168.10.200
это устройство подключается к удаленному серверу (IP 213.x.x.x) и создает VPN тунель получая IP 10.90.0.25… и уже сервер по этому адресу по протоколу udp 7000 порту должен договорится с устройством о передаче данных… устройство пингуется… телнет на 7000 порт подключается по IP 10.90.0.25… но данные не передаются
Может ли быть дело в настройках нашего шлюза на Ubuntu?.. что он зарезает udp протокол… или чего еще не разрешено..?
все настроил согласно этой статьи… интернет работает… да и OpenVPN вроде ж на 1194 udp стучится и работает… а вот почему данные не передаются не понятно… если на прямую подключить шнур к ноутбуку… то ноутбук все считывает… не понимаю какие могут быть ограничения по VPN (впервые сталкиваюс с линуксом… искал по гуглу как шлюз настроить)
может вы создавали какие-то правила на фаерволле? Просто другого объяснения вашей проблемы, не видя системы, я не вижу.
с клиента шлюз пингуется, nslookup mail.ru тоже работает, но пинги других айпи адресов или сайтов несрабатывают, на шлюзе интернет есть. в чем может быть проблема?
iptables -F
очищаем таблицу filters
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
собственно, раздача интернета
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
вот тут непонятно. Какие пакеты отбрасываются?
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
и тут тоже.
Что делают два последних правила?
Запрещает подключения снаружи внутрь. Суть ясна?!
А по второму пункту
TCPMSS — устанавливает максимальный размер TCP-сегмента.
С точки зрения клиента, эта проблема выглядит так: пинги проходят нормально, но при попытке открыть какую-либо веб-страницу, браузер «подвисает». При этом с самого шлюза все работает нормально. В этом случае достаточно применить на шлюзе следующую команду
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
которая обеспечит автоматическую установку размера сегмента в TCP-заголовках SYN- и SYN,ACK-пакетов в соответствии с минимальным из известных нашему шлюзу значений MTU на пути следования пакета. Например, если пакет пришел с интерфейса eth0 (MTU 1500) и уходит через интерфейс ppp0 (MTU 1492), а суммарный размер заголовков сетевого итранспортного уровней составляет 40 байт (20 байт TCP и 20 байт IP), то целесообразно установить MSS равным 1452 байтам.
Помимо возможности автоматического выбора TCP MSS, вы можете задать необходимое значение и вручную, используя параметр --set-mss значение. Это бывает полезным в том случае, если вам заведомо известно, что дальше на маршруте встречаются участки с еще меньшим MTU, а пограничные сервера этих участков опять же блокируют ICMP destination unreachable/fragmentation needed.
Теперь такой вопрос.
Весь интернет трафик идет через прокси сервер (не локальный) — фишка провайдера.
Можно ли без Squid на сервере перенаправлять весь трафик туда? В команде REDIRECT есть только возможность задать порт. А сервер?
А то сейчас на каждом клиенте приходится прописывать адрес сервера прокси.
Вам нужен DNAT, тогда запись принимает (примерно) следующий вид:
Таким образом можно заворачивать весь трафик, поступающий на определенный порт, на проксю провайдера. Остальные правила «запислите» сами.
Настроил шлюз по данной статье — все отлично работает.
Начал осваивать IPTABLES — столкнулся с проблемой.
Добавил к приведенным правилам правила для блокировки сайта вк всех клиентских ПК, кроме одного.
Все работает до первой перезагрузки клиентского компьютера. После перезагрузки в ВК получается зайти без проблем. Перезагружаю шлюз после влючения клиента — все опять работает как надо.
В rc.local прописано:
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -d 192.168.0.11 -s 'vk.com' -j ACCEPT
iptables -A FORWARD -s 'vk.com' -j DROP
Подскажите, в чем может быть дело?
Задача — запретить доступ к известной соцсети всем, кроме 192.168.0.11
1. Привожу файл rc.local к виду
#конфиг, который я взял с этого блога
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#ниже — мои попытки, которые касаются ВК
iptables -A FORWARD -d 192.168.0.11 -s 'vk.com' -j ACCEPT
iptables -A FORWARD -s 'vk.com' -j DROP
Перезагружаю шлюз.
2. После перезагрузки шлюза на клиентском ПК все работает как надо (т.е. vk.com не доступен), НО стоит мне перезагрузить этот клиенсткий комп (а шлюз в это время работает), и в контакт с него можно зайти без проблем.
3. Если я перезагружу шлюз (а клиент будет пока не перезагружен), то все работает как надо.
Иными словами, все перестаёт работать после после перезагрузки клиентских компов, и лечится перезагрузкой шлюза.
Не могу понять, почему так?
Остальные — выдаются по dhcp, но все находятся в сети 192.168.0.0/24.
Раздача интернета пользователям идет нормально, по принципу, описанному в вашей статье.
PS: Что-то мне подсказывает, что сайты блокировать таким образом — топорно, но все таки…
Я имел опыт блокирования VC.com через Iptables, от этой блокировкой еще куча сайтов перестала работать, видимо они как-то использовали «вконтактовское» API.
Проверьте внимательно, просто я не могу вам помочь, не видя ничего.
Проблема была решена путем исправлений в файле /etc/init.d/dnsmasq, строчки «nameserver 127.0.0.1» на dns выданный провайдером, плюс к этому в файле dhcpd.conf в строке domain-name-servers тоже поставил dns провайдера. В любых других случаях шлюз по данному мануалу уже работать не будет. Может стоит изменить мануал. (мое решение возможно не самое правильное поэтому строго не судите)
За статью автору отдельное спасибо, до вчерашнего дня горя не знал, больше года сервер отработал!
Шлюз, настроенный по данной схеме, работает уже в 4х компаниях и жалоб пока не поступало, хотя обновления устанавливаются регулярно.
Спасибо.
Если проблема имела место, то скорее всего будет исправлена со следующий обновлением.
В первую очередь спасибо за статью, всё работает интернет раздаёт. Но есть один нюанс. Что-то подобное встретил в комментариях у пользователя EternalTear, но решение так и не описано. Так вот.
Есть шлюз с Ubuntu 12.04. Внешний адрес статический, от провайдера. Локальный тоже статика. Интернет в локальной сети есть, мессенджеры и другие программы, требующие интернет соединения по различным портам, РАБОТАЮТ. Существует несколько удалённых VPN PPTP серверов, поднятых на D-Link DFL-860E. При подключении к любому из них сессия обрывается на этапе проверки пользователя и пароля, пишет ошибку 619 (Windows 7). При этом так же есть удалённый сервер с VPN PPTP на базе Windows Server 2008 к которому подключение происходит нормально, при тех же условиях. Если вместо шлюза с UBUNTU 12.04 ставлю любой другой маршрутизатор, подключение к D-Link-ам начинает работать. Никаких правил фильтрации я не создавал.
ВОПРОСЫ:
1.В чём может быть проблема?
2.Где на UBUNTU 12.04 смотреть логи для отладки? (с Linux мало знаком, нахожусь в процессе изучения)
Проблема с ВПН состоит в том, что трасировщик (он же conntrack) не может корректно работать с GRE трафиком без необходимых модулей, несмотря на то что открыты порты и все такое. Вот как-то так…
Меняется следующим образом:
Где вместо нулей, поставить те данные которые вам нужны, работает до перезагрузки! Если требуется постоянная смена, то необходимо прописать скрипит, на запуск при старте системы.
Работать должно отлично, главное чтобы в одной подсети MAC адреса не повторялись
1) как сделать что бы в локалку ip выдавались автоматически а не прописывать каждому если клиентов много и они от шлюза разведены свитчами
«Присваиваем клиенту:
IP 192.168.10.2
.....»
2)как до этого чудо прокинуть правильно vpn что бы можно было с другого конца земли посмотреть если что то случится?
Думаю это подойдет howitmake.ru/blog/debian/23.html
auto wlan0
iface eth0 inet dhcp
wpa-ssid *
wpa-psk *
auto wlan1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
Сервер имеет ip 192.168.0.107, клиенту ставлю 192.168.10.2, но 192.168.10.1 с него не пингуется, в чем может быть проблема?
auto wlan0
iface wlan0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.100.1
netmask 255.255.255.0
Сервер с клиента пингуется, nslookup все показывает, но «без доступа к интернету».
Вот как-то так будет выглядеть.
Если вы отправляете DNS запрос с клиента, то он пытается обращаться сам к себе IP 127.0.0.1 а это loopback!
Если с сервера, то проверьте какой NDS сервер прописан у вас в настройках и работает у вас DNSMASQ? Т.е. служба должна слушать 53 порт
Проблема оказалась в виртуальной машине, по какой-то причине ubuntu не мог активировать интерфейс «Eth1».
Если в настройках изменить на «Eth2» все работает.
Никогда не настраивал сеть на линукс, а тут возникла срочная необходимость реоранизовать сеть, в общем:
Есть сервер на Ubuntu Server 14.04, в нем 4 сетевые карты. DHCP и локальные зоны в DNS для eth2 кое-как настроил, сетевые интерфейсы и подключения к провайдерам тоже, но возникла проблема с настройкой iptables т.к. раньше его не встречал
Провайдер на eth0 должен быть доступен для сети eth2 без ограничений
У провайдера на eth1 должен быть доступен для сети eth3 только один сайт со статичным ip 89.212.185.14
Связи между eth2 и сетями eth1 и eth3 не должно быть (ну или в идеале использовать для сети eth2 интерфейс eth1 в качестве резервного при недоступности его основного eth0)
Примерная схема сети
Вам необходимо настроить маршрутизацию между этими подсетями
неплохой гайд по этому вот:
habrahabr.ru/post/30076/
А по поводу работы с iptables и маршрутизацией пакетов- просто отличная статья.
www.k-max.name/linux/iptables-v-primerax/
Готового решения не привожу т.к. без возможности тестирования, скорее всего, рекомендации будут не совсем рабочие (а я еще не достиг такой силы просветления чтобы писать правила и они сразу работали даже без тестирования). :)
Пингуется в обе стороны нормально.
Пробовала писать dnsmasq на шлюзе, там пишут, что 53 порт занят. Мне нужно поменять порт? Если да, то как узнать на какой?
Порт менять не нужно, 53й порт слушает слежба ДНС
чтобы узнать, кто слушает порт, есть команда
Помогите юзверю настроить 2 карты для локалки
Пробовал по всякому. По 192 пингует, а вот по 172 ни в какую
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o eth0 -s 172.17.39.0/24 -j MASQUERADE
P.S. и если вы уж указали все параметры — то можно было и не комментировать их, а если с ад интеграция лучше вообще указать днс ад и добавить маскарадинг в в авто правило которое у вас закомментировано
sysctl.conf подправил
таблицы скорректировал
и всё равно вот так:
Причём не пингуется как сам сервак, так и с сервака 172 подсеть не видны
ответьте на мой предыдущий вопрос, иначе я даже понять не могу, что у вас там за ситуация!
Я ведь ответил в предыдущем посте
Сеть подключена и настроена правильно?
Трудно заниматься гаданиями!
Оказывается!!!, чтобы заработал второй сетевой интерфейс нужно было воткнуть второй сетевой кабель. Сцуко, долбодятел я.
ВСЕМ спасибо.
З.Ы. у меня все остальные машины с одной сетевой и двумя интерфейсами на них, а сервак с двумя картами и стоит в серверной неудобно. Это так для оправдания себя в своих глазах :-)
Например, вам нужно пробросить порт 80 с интерфейса eth0 к адресу локальной сети 192.168.1.100 на порт 8080, тогда правило iptables выглядеть примерно так:
Покажите содержимое файла /etc/network/interfaces
установил dnsmasq и на клиенте проверяю nslookup
и вот что выдает:
служба dnsmasq запущена?
делайте все это на серверной версии ОС, на десктопе это у меня не заводилось
Сетевая карта смотрящая в интернет со шлюза — клиентом пингуеться а вот далее не пингуеться ничего, не DNS провайдера не какой либо сайт. Подскажите, что не так?
Ubuntu 12.04.5 server Адреса кругом статические.
покажите вывод команды ifconfig
inet addr:94.179.128.211 Bcast:94.179.128.215 Mask:255.255.255.248
inet6 addr: fe80::9294:e4ff:fe82:ccb0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frsme:0
TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14517 (14.5 KB) TX bytes:5166 (5.1 KB)
eth1 Link enkap:Ethernet Hwaddr 00:13:46:3a:b6:f0
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::213:46ff:fe3a:b6f0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frsme:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:496 (496.0 B) TX bytes:648 (648.0 B)
lo Link enkap: Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Score:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frsme:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:1424 (1.4 KB) TX bytes:1424 (1.4 KB)
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
TSPMSS tcp – – anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
REJECT all – – anywhere reject — with icmp — port unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
поднимал на виртуалке вмваре
эта статья использована мной более 10 раз!
мой скайп michalcov.sergey. мой телеграмм +996556699995
[sudo] password for hub:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
hub@ubuntu:~$
ens33 Link encap:Ethernet HWaddr 00:0c:29:bb:dd:d7
inet addr:192.168.168.155 Bcast:192.168.168.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:febb:ddd7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:465 errors:0 dropped:16 overruns:0 frame:0
TX packets:224 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:43643 (43.6 KB) TX bytes:29537 (29.5 KB)
ens34 Link encap:Ethernet HWaddr 00:0c:29:bb:dd:e1
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:febb:dde1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:288 errors:0 dropped:0 overruns:0 frame:0
TX packets:252 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21330 (21.3 KB) TX bytes:18550 (18.5 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:164 errors:0 dropped:0 overruns:0 frame:0
TX packets:164 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:12200 (12.2 KB) TX bytes:12200 (12.2 KB)
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
iface ens33 inet static
address 192.168.168.155
netmask 255.255.255.0
gateway 192.168.168.6
dns-nameservers 192.168.168.6 8.8.8.8
auto ens34
iface ens34 inet static
address 192.168.0.1
netmask 255.255.255.0
#gateway 192.168.0.254
#dns-nameservers 192.168.0.254 8.8.8.8
iptables -F
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
iptables -A FORWARD -i ens33 -o ens33 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Вы хоть статью прочитайте внимательно, я ведь думал когда ее писал!
iptables -F
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
iptables -A FORWARD -i ens33 -o ens33 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
exit 0
собственно я так сделал и ничего не изменилось результать iptables -L показывает тот же результат
забейте в поисковике, «восстановление iptables после перезагрузки ubuntu»