Internet Gateway on Ubuntu Server (chapter one - base, dns, nat, squid, dhcp)

Сегодня займемся созданием шлюза на базе Ubuntu Server. Перед аналогичными решениями на базе Microsoft этот вариант имеет большую производительность, гибкость, безопасность и устойчивость. Перед интегрированными в железо решениями (кроме cisco) вариант имеет преимущество в производительности и опять же - гибкость. Перед специализированными решениями вроде SmoothWall или FRESCO вариант с Ubuntu Server имеет большую универсальность за счет полного ядра и всех новых библиотек, хотя вероятно меньшую надежность и производительность.



На момент написания статьи, последним стабильным релизом Ubuntu Server был Jaunty. Karmic, который еще на стадии преальфы, рассматривать пока что рано. Железо для шлюза есть следующее:
  • Процессор Pentium III 933 Mhz, ядро Coppermine;
  • 256 мегабайт оперативной памяти;
  • Материнская плата от Intel, старая, но рабочая;
  • 40 гигабайт НЖМД;
  • 2 сетевых адаптера (Base100)
Было желание раз и навсегда защитить шлюз от компьютеров локальной сети, снизить потребление электричества, получить стабильную систему, которую можно не трогать годами. Также был свободный денек и желание получить опыт.
Да-да, именно свободный денек. У читателей статьи весь процесс займет около получаса, вместе с установкой системы. У меня же не было подробного пошагового руководства, потому целый день собирал по крупицам сведения.
От читателя требуются такие же желания, базовые знания сетей и сетевых технологий, более или менее прямые руки, умение думать.
Также рекомендую не забывать делать резервные копии всех файлов, которые мы будем изменять.
cp path_to_file path_to_file-backup
К этой комманде можно прибавить лишь sudo, в том случае, если редактируется файлы, которые принадлежат пользователю root.


0. диск\образ

Ubuntu Server можно получить несколькими способами: скачать, купить или заказать бесплатно. У меня безлимитный интернет, и я выбираю первый способ.
Скачать можно тоже несколькими способами и первый из них - привычное скачивание с http\ftp сервера:
32bit ftp://ftp.corbina.net/pub/Linux/ubuntu-cd/jaunty/ubuntu-9.04-server-i386.iso
64bit ftp://ftp.corbina.net/pub/Linux/ubuntu-cd/jaunty/ubuntu-9.04-server-amd64.iso

Еще быстрее можно загрузить образ диска использую технологию BitTorrent:
32bit ftp://ftp.corbina.net/pub/Linux/ubuntu-cd/jaunty/ubuntu-9.04-server-i386.iso.torrent
64bit ftp://ftp.corbina.net/pub/Linux/ubuntu-cd/jaunty/ubuntu-9.04-server-amd64.iso.torrent

Загрузка с торрентов имеет преимуществ как для Вас, так и для Canonical. Для Вас основное преимущество заключается в скорости. Так как каналы интернет Сanonical и партнеров зеркальщиков не резиновые, то в часы пик скорость заметно снижается. Также, используя торренты, вы позволяете Canonical экономить деньги на сервера, зеркала и каналы. Лучше пускай эти деньги уйдут на спонсирование новых разработок.

После загрузки образа, запишите его на компакт диск.
Загрузив и записав, купив или получив Ubuntu Server, можно приступать к установке.

1. Установка
В целом, установка сервера не вызовет никаких проблем даже у начинающих пользователей. Даже разметка диска происходит в автоматическом режиме, хотя по желанию все можно сделать руками.
На последних шагах установщик попросит отметить галками предусмотренные наборы пакетов (у Microsoft это называется ролями). Выбираем только OpenSSH. Остальное мы сделаем ручками.
По окончании установки перезагрузите компьютер. Переходим ко второму пункту.

2. настраиваем сетевые карты
Установщик в процессе инсталяции предложит настроить только одну сетевую карту. Вторую и остальные нужно настраивать отдельно. Для этого нужно лишь отредактировать файл /etc/network/interfaces:

sudo nano /etc/network/interfaces

После редактирования файл должен иметь примерно такой вид:
# The loopback network interface
auto lo
iface lo inet loopback

# LAN
auto eth0
iface eth0 inet static
address 172.16.0.254
netmask 255.255.255.0

# ISP Network
auto eth1
iface eth1 inet dhcp
eth0 у меня смотрит в локальную сеть, а eth1 подключена к интернет провайдеру. Перезапускаем сеть:
sudo /etc/init.d/networking restart
Проверяем:
ping ya.ru
3. Удаленное администрирование.
В серверной, как обычно, кондиционер дует в полную - холодно. Теперь, когда сеть настроена, можно пересаживаться за ноутбук или рабочую машину в более теплом месте и настраивать сервер удаленно. Для этого на удаленной машине набираем:
ssh 172.16.0.254
4. Обновления.
После установки рекомендуется получить актуальные версии всех пакетов:
sudo apt-get update
sudo apt-get upgrade
5. Настраиваем DNS.
Теперь начнем настраивать собственно серверное программное обеспечение. Первым из списка будет DNS сервер. Инсталлируем:
sudo apt-get install bind9
После инсталляции останавливаем, так как будем редактировать его конфигурацию:
sudo /etc/init.d/bind9 stop
Создаем и редактируем локальную зону локальной сети:
sudo touch /etc/bind/maxlan.conf
sudo nano /etc/bind/maxlan.conf
Содержимое:
zone "max."{
type master;
file "/etc/bind/db.max";
};
Далее описываем зону:
sudo touch /etc/bind/db.max
sudo nano /etc/bind/db.max
Содержимое:
$TTL 86400 ; 1 day
@ IN SOA server root.server (
2009032601 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
@ IN NS server

server A 172.16.0.1 ; адрес сервера в сети
Обратная зона:
sudo touch /etc/bind/local.rev
sudo nano /etc/bind/local.rev
Содержимое:
$TTL 604800
@ IN SOA server.max. root.server.max. (
2009032601 ; serial
604800 ; refresh
86400 ; retry
2419200 ; expire
604800 ; negative cache TTL
)
@ IN NS server.max.
1.0.16 IN PTR server.max.
Далее:
sudo nano /etc/bind/named.conf.options
Содержимое:
options {
directory "/var/cache/bind";

version "Version";
allow-recursion {"net";};
allow-query {any;};
listen-on-v6 {none;};
};
Далее:
sudo nano /etc/bind/named.conf
Добавляем в начало:
acl "net" {
172.16.0.0/24;
127.0.0.1;
85.90.192.9;
195.234.220.8;
85.90.192.8;
};
и в конец:
zone "172.in-addr.arpa" {
type master;
file "/etc/bind/local.rev";
};
и последней командой:
include "/etc/bind/maxlan.conf";
Дописываем домен поиска:
sudo nano /etc/resolv.conf
И добавляем в начало:
search server.max
nameserver 127.0.0.1
Указываем как резолвить самого себя:
sudo nano /etc/hosts
после "127.0.0.1 localhost" вписываем:
172.16.0.254 server.max server
Запускаем:
sudo /etc/init.d/bind9 start
Если не запустился - проверяем cat /var/log/syslog и исправляем ошибки.
Теперь на компьютере из локальной сети пробуем:
nslookup -172.16.0.254
ya.ru
Должно отдать Ip-адрес яндекса.

6. Настройка proxy.
Даже при широкополосном канале в сеть Интернет, более половины трафика от браузера повторяется от пользователя к пользователю. Частично с этим борется кеш самого браузера, но гораздо эффективнее и централизовано с этим справится серверный кеширующий прокси сервер. Также при помощи прокси сервера можно управлять доступом пользователей к определенным ресурсам, управлять скоростью, резать рекламные банеры и еще много чего. Сейчас мы сделаем лишь базовую настройку прокси. В качестве программы прокси сервера будем использовать Squid. На момент написания статьи в репозиториях Ubuntu лежала третья версия этого старейшего и лучшего прокси.

Устанавливаем, останавливаем:
sudo apt-get install squid
sudo /etc/init.d/squid stop
Открываем конфиг для редактирования:
sudo nano /etc/squid/squid.conf
ищем директиву http_port и переписываем:
http_port 3128 transparent
меняем:
cache_dir ufs /var/spool/squid 4096 32 256
ищем и коментируем строки:
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
и добавляем ниже:
acl localnet src 172.16.0.0/24 # ournet
ищем и раскомментируем строку
#http_access allow localnet
раскомментируем строку и даем 15 мегабайт
memory_pools_limit 5 MB
Задаем язык вывода ошибок для пользователя
error_directory /usr/share/squid/errors/Russian-koi8-r
Теперь строим кеш:
sudo /usr/sbin/squid -z
и запускаем
sudo /etc/init.d/squid start
7. настраиваем NAT
NAT - это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Суть механизма состоит в замене адреса источника (source) при прохождении пакета в одну сторону и обратной замене адреса назначения (destination) в ответном пакете. Наряду с адресами source/destination могут также заменяться номера портов source/destination.

Так как я не нашел механизма в Linux, который сохранял бы все настройки iptables при перезагрузке сервера или сети, то его настройку вынесем в отдельный файл скрипт, который будет запускатся при активировании сети.
Создаем этот скрипт и открываем для редактирования:

sudo touch /etc/nat-up
sudo nano /etc/nat-up

Далее содержимое, с моими комментариями:
#!/bin/sh

# очищаем все настройки
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

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

# Всегда принимаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем соединения, которые инициированы внутри (eth0)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем доступ из LAN-сети к внешнему миру
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# Запрещаем форвардинг из внешнего мира во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth1 -j REJECT

# заворачиваем пакеты на 80 и 8080 порты на прокси. У кого нет - строчку удаляем.
iptables -t nat -A PREROUTING -i eth0 -d ! 172.16.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 172.16.0.254:3128
Теперь нам нужно, чтобы данный скрипт запускался при старте сети. Редактируем:
sudo nano /etc/network/interfaces
и в конец дописываем
post-up /etc/nat-up
Проверяем:
sudo /etc/init.d/networking restart
В локальной сети должен заработать Интернет.

8. DHCP

DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической конфигурации узла) - это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP.

Устанавливаем и останавливаем:
sudo apt-get install dhcp3-server
sudo /etc/init.d/dhcp3-server start

Редактируем конфиг:
sudo nano /etc/default/dhcp3-server
Находим и заменяем на eth0 (интерфейс локальной сети):
INTERFACES="eth0"
Открываем:
sudo nano /etc/dhcp3/dhcpd.conf
Теперь находим следующие директивы и редактируем. Тех, которых нет - создаем:
default-lease-time 600;
max-lease-time 7200;

option subnet-mask 255.255.255.0;
option broadcast-address 172.16.0.255;
option routers 172.16.0.254;
option domain-name-servers 172.16.0.254;
option domain-name "max";
В том же файле, в конце создаем нашу зону:
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.1 172.16.0.252;
}
Если мы хотим, чтобы определенным компьютерам всегда выдавался заданный ip-адрес - дописываем:
host power {
hardware ethernet 00:1F:3C:46:07:56;
fixed-address 172.16.0.13;
}

host thebest {
hardware ethernet 00:E0:4D:72:70:68;
fixed-address 172.16.0.1;
}
Запускаем:
sudo /etc/init.d/dhcp3-server


ВСЕ. Теперь наш сервер умеет раздавать "Интернет" в локальную сеть, а также кешировать http трафик. Также умеет преобразовывать интернет имена в ip, раздавать компьютерам локальной сети необходимые для работы настройки.
Это базовая настройка. В дальнейшем мы обязательно прикрутим фильтрацию рекламы, небольшой потоковый антивирус, управление и балансировку канала и трафика (QoS), и может быть что то еще хорошее. Следите за блогом.

Коментарі

  1. > error_directory /usr/share/squid/errors/Russian-koi8-r

    Почему не UTF-8?

    ВідповістиВидалити
  2. Потому что нет:

    maxik@server:~$ ls -l /usr/share/squid/errors/
    итого 136
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Armenian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Azerbaijani
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Bulgarian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Catalan
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Czech
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Danish
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Dutch
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 English
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Estonian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Finnish
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 French
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 German
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Greek
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Hebrew
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Hungarian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Italian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Japanese
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Korean
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Lithuanian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Polish
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Portuguese
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Romanian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:19 Russian-1251
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Russian-koi8-r
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Serbian
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Simplify_Chinese
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Slovak
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Spanish
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Swedish
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Traditional_Chinese
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Turkish
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Ukrainian-1251
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Ukrainian-koi8-u
    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Ukrainian-utf8

    ВідповістиВидалити
  3. А украинская есть:

    drwxr-xr-x 2 root root 4096 2009-06-27 21:20 Ukrainian-utf8

    ВідповістиВидалити
  4. Да, есть. Мне не принципиально.

    ВідповістиВидалити
  5. acl "net" {
    172.16.0.0/24;
    127.0.0.1;

    85.90.192.9;
    195.234.220.8;
    85.90.192.8;
    };

    приветствую! Мне бы хотелось уточнить, что это за последние три адреса. заранее благодарен

    ВідповістиВидалити
  6. Анонимный, это dns-сервера моего провайдера.

    ВідповістиВидалити
  7. allow-transfer {none;};
    forward first;
    allow-query {any;};
    Не слишком ли опасно открывать доступ всем?
    allow-query {172.16.0.0/24;127.0.0.1;};
    forwarders {IPпровайдера1;IPпровайдера2};
    allow-recursion {172.16.0.0/24;127.0.0.1};
    наверное будет правильнее.

    ВідповістиВидалити
  8. Здравствуйте, уважаемый автор!
    Очень благодарен за проделанную работу по написанию данного HowTo.
    В процессе работы в секции настройки NAT у меня возникли проблемы: у меня только один сетевой интерфейс (eth0), который смотрит в локальную сеть, Интернет подключается через широкополосный USB-модем (ttyUSB0) посредством программы дозвона wvdial.
    Могу ли я в строчках
    # Разрешаем соединения, которые инициированы внутри (eth0)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
    iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    # Разрешаем доступ из LAN-сети к внешнему миру
    iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
    # Masquerade.
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    # Запрещаем форвардинг из внешнего мира во внутреннюю сеть
    iptables -A FORWARD -i eth1 -o eth1 -j REJECT

    заменить имя устройства eth1 на ttyUSB0?

    ВідповістиВидалити
  9. Хм.. Распространенный вариант, но я не сталкивался. Проверить сейчас негде, так что попробуйте и отпишите о результатах. На первый взгляд все должно работать.

    ВідповістиВидалити
  10. Спасибо! статья очень пригодилась ... хотелось бы еще биллинг прицепить ...

    ВідповістиВидалити
  11. Статья хороша! Но, уже в начале появились проблемы. После networking restart на экране: if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing nfs mounts. Вы не в курсе, что бы это могло значить??? Заранее, спасибо.

    ВідповістиВидалити
  12. Анонимный, ничего страшного не значит. Просто NFS перемонтируется каждый раз после ifup для eth1.

    ВідповістиВидалити
  13. После того как воткнул NAT настройки пишет:

    /bin/sh: /etc/nat-up: Permission denied
    Failed to bring up eth1.

    че делать? :)

    ВідповістиВидалити
  14. Анонимный, дать права на выполнение скрипта

    ВідповістиВидалити
  15. Добрый день. Такая проблема:
    1)if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing nfs mounts
    2) Starting DHCP server dhcp3 OK.

    Клиенты не получают адреса.

    ВідповістиВидалити
  16. Євген, пакеты бегают до клиентов? wireshark поможет посмотреть.

    ВідповістиВидалити
  17. Подскажите пожалуйста а для отображения страниц браузером настраивать proxy обязательно??? А то у меня крайне странная ситуация DNS работает(имена в ip превращаются на клиенте) NAT тоже вроде работает (по полученным ip пинг проходит) а через браузер заходить отказывается. У меня к серверу инет заходит через pptp.
    П.С. А может ли провайдер закрыть возможность подключить втроую машину??

    ВідповістиВидалити
  18. Анонимный, не обязательно настраивать прокси. Но если нужно резать рекламу или еще какие фильтры - то нужно. Браузер как отказывается? Ошибка?

    Провайдер видит только ваш сервер, вторую машину он физически видеть не сможет и заблокировать тоже.

    ВідповістиВидалити
  19. firefox очень долго думает а потом сообщает "время ожидания ответа от сервера ya.ru истекло" хотя в консоли он отлично проходит ping и tracepath. Но tracepath с клиента и с сервера немного отличаются друг от друга, при tracepath с клиента пропускается один локальный сервер. У меня проблема в настройке NAT??

    ВідповістиВидалити
  20. Анонимный, ну вы бы выложили сначала эти трассы.
    И резудьтат wget ya.ru

    НАТ все запросы на 80 порт перенаправляет на прокси (на 3128 порт). А прокси вы не ставили. Вероятно проблема в этом. Или убирайте перенаправление, или ставьте прокси.

    ВідповістиВидалити
  21. Спасибо Автору, все очень оказалось полезным, некоторые настройки конечно пришлось искать в другом месте но основа сдесь доступно и понятно описана. ОГРОМНОЕ СПАСИБО!

    ВідповістиВидалити
  22. отличная статья. Помогла. А когда же продолжение выйдет? сквид нужно настроить на ограничение скорости инета

    ВідповістиВидалити
  23. Пока что нет времени дописать, так как в продакшене использую FreeBSD, а дома dd-wrt..

    ВідповістиВидалити
  24. остается в настройке iptables заменить

    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT

    на

    iptables -P INPUT DROP
    iptables -P FORWARD DROP

    иначе ваш сервер готов к подключениям извне, по всем портам, которые он слушает! :-)

    ВідповістиВидалити
  25. в правилах для IPTABLES,

    в строках

    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT

    надо заменить на DROP, иначе порты будут открыты наружу.

    ВідповістиВидалити
  26. Вообще говоря да. Спасибо, исправил.

    ВідповістиВидалити
  27. Спасибо, коллега! Все понятно и без лишней воды.

    ВідповістиВидалити
  28. Такое впечатление, что nat-up не запускается (права на исполнение установил), локалка есть,DHCP работает,а инета в локалке нет. Подскажите кто может, плиз.

    ВідповістиВидалити
  29. У меня проблема. DHCP работает но интернет не раздает, в чем проблема??? Пожалуйста помоги!)

    ВідповістиВидалити
  30. to Анонимный.
    возможно у вас в интернет смотрит eth0 а в локалку eth1. тогда в nat-up надо будет поменять эти обозначения. у меня тоже не работало, до этого

    ВідповістиВидалити
  31. to Михаил, а как DHCP должен раздавать интернет?

    ВідповістиВидалити
  32. Автор видалив цей коментар.

    ВідповістиВидалити
  33. Автор видалив цей коментар.

    ВідповістиВидалити
  34. Автор видалив цей коментар.

    ВідповістиВидалити
  35. вобщем у меня провайдер выдает статичные айпи у меня сделано так:

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # LAN
    auto eth0
    iface eth0 inet static
    address 172.16.0.254
    netmask 255.255.255.0

    # ISP Network
    auto eth1
    iface eth1 inet static
    address **.***.**.***
    netmask ***.***.***.***
    gateway **.***.**.***

    также в resolv я прописал адреса моего ДНС
    nameserver **.***.***.**
    nameserver **.***.***.**

    DHCP раздает IP
    NAT не дает Интернет... - В чем проблема? я проверил в написании ошибок никаких, скрипнт в interfaces запушен с правами... я незнаю даже в чем проблема

    PS у меня также как и у тя eth0 и eth1...

    ВідповістиВидалити
  36. 1) У меня eth0 и eth1 такие же как в инструкции
    2) Мне провайдер выдает статичные IP, вот что я написал в интерфейсе:

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # LAN
    auto eth0
    iface eth0 inet static
    address 172.16.0.254
    netmask 255.255.255.0

    # ISP Network
    auto eth1
    iface eth1 inet static
    address ***.***.***.***
    netmask ***.***.***.***
    gateway ***.***.***.***

    3) в resolv я указал ДНС провайдера

    nameserver ***.***.***.***
    nameserver ***.***.***.***

    4) DHCP работает
    5) NAT не раздает интернет.
    6) пинг на серве пашет
    7) nslookup пашет
    8) прокси не ставил. Сторчку в нате убрал.
    9) сделал пункты 1 2 4 5 7 8

    Вопрос: Почему не раздает интернет...

    ВідповістиВидалити
  37. У меня DHCP на win2003. Я раздаю параметры 003 006 066 067.(это нужно для загрузки тонких клиентов по сети) Можно ли сделать подобное dhcp3-server

    ВідповістиВидалити
  38. Можно. Открываем ман, ищем необходимые параметры и добавляем в конфиг.

    ВідповістиВидалити
  39. извините, что за ip 17.16.0.1
    там разве не должно быть server 172.16.0.254 или Я чегота не понимаю. спасибо...

    ВідповістиВидалити
  40. Ребята здесь настройки для iptables даны неправильно ...ну или во всяком случае у меня они так и не заработали

    ВідповістиВидалити
  41. :) Чтобы заработали нужно сделать все правильно..

    ВідповістиВидалити
  42. Добрый день, не могу решить проблему
    Нужно чтобы в инет ходили только те ip которые разрешены, подскажите в чем ошибка, если коментирую строчку
    # Разрешаем доступ из LAN-сети к внешнему миру
    iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    то инет отваливается

    #!/bin/sh

    # очищаем все настройки
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

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

    # Всегда принимаем трафик на loopback-интерфейсе
    iptables -A INPUT -i lo -j ACCEPT
    # Разрешаем соединения, которые инициированы внутри (eth1)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT
    iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    # Разрешаем доступ из LAN-сети к внешнему миру
    iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    # Masquerade.
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    # Запрещаем форвардинг из внешнего мира во внутреннюю сеть
    iptables -A FORWARD -i eth0 -o eth0 -j REJECT

    #пропускаем инет для нужным айпи
    iptables -A FORWARD -s 168.192.0.17 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.17 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.11 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.11 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.13 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.13 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.14 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.14 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.22 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.22 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.23 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.23 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.30 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.30 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.31 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.31 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.33 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.33 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.35 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.35 -o eth1 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.100 -i eth1 -j ACCEPT
    iptables -A FORWARD -d 168.192.0.100 -o eth1 -j ACCEPT

    #остальное закрываем
    iptables -A FORWARD -o eth1 -j DROP

    #считаем трафик самого шлюза
    iptables -A INPUT -i eth1 -j ACCEPT
    iptables -A OUTPUT -o eth1 -j ACCEPT

    Подкорректируйте с комментарием пожалуйста

    ВідповістиВидалити
  43. Спасибо большое за HOWTO - заработало без проблем.
    Интересует один лишь вопрос - для чего поднимать dns-сервер, ведь проще раздать по dhcp адрес dns-сервера провайдера или Google?
    Поправьте, если ошибаюсь.

    ВідповістиВидалити
  44. А для того, чтобы иметь адреса типа server.max, laptop.max и тп внутри своей сети :) Удобно.

    ВідповістиВидалити
  45. Для Ubuntu 10.04 LTS параметр cache_dir ufs /var/spool/squid 4096 32 256 - неверен.
    Там другая папка - cache_dir ufs /var/spool/squid3

    Из-за этой ошибки squid не принимает подключения.

    Не знаю, как на других версиях Ubuntu.

    ВідповістиВидалити
  46. bind9 запускается без ошибок, а при попытке проверить его выдаёт это:

    alximik@elion-pc:~$ nslookup -172.16.0.254
    *** Invalid option: 172.16.0.254
    > ya.ru
    ;; connection timed out; no servers could be reached
    >
    куда копать?

    ВідповістиВидалити
  47. спасибо, заработало! кст, создал тему на форуме убунты http://forum.ubuntu.ru/index.php?topic=158032.0 , предлагаю там тоже обсуждать, во всяком случае там удобнее описывать проблемы))

    ВідповістиВидалити
  48. Добрый день, спасибо за статью.
    Возникло пару вопросов:
    1. Разве в этой строке не должно быть ...-i eth1 -o eth0 ...
    # Запрещаем форвардинг из внешнего мира во внутреннюю сеть
    iptables -A FORWARD -i eth1 -o eth1 -j REJECT
    2. Конструкции такого вида ...NEW -i ! eth1... не воспринимает хочет ...NEW !-i eth1..., на сколько корректно одно и другое?

    ВідповістиВидалити
  49. 1. В данном случае корректно, просто режем все из внешней сети, что мы сами не запрашивали.
    2. Вроде корректно, в текущей версии (iptables v1.4.10) действительно поменяли порядок.
    "Using intrapositioned negation (`--option ! this`) is deprecated in favor of extrapositioned (`! --option this`)."

    ВідповістиВидалити
  50. АндрейОс, я не проверил, но вероятно
    iptables -A FORWARD -s 168.192.0.17 -j ACCEPT
    iptables -A FORWARD -s 168.192.0.13 -j ACCEPT
    ...
    iptables -A FORWARD -s 168.192.0.100 -j ACCEPT

    ВідповістиВидалити
  51. Спасибо. Очень хорошая статья.
    По поводу сохранения iptables.
    Вот здесь (http://www.azure.org.ua/en/articles/7-Zagruzka_pravil_iptables_pri_zapuske_(Ubuntu_10.04_-_10.10).html) есть чудесное решение.

    ВідповістиВидалити
  52. # Запрещаем форвардинг из внешнего мира во внутреннюю сеть
    iptables -A FORWARD -i eth1 -o eth1 -j REJECT

    тут ошибки нет? может: -i eth1 -o eth0

    ВідповістиВидалити
  53. После применения правил iptables описанных в скрипте nat-up сервер перестает принимать ssh подключения на внешний интерфейс (у меня eth0), так как все непрошеные входящие мы отметаем. Следовательно стоит как минимум для нас самих открыть 22 порт для приема входящих соединений
    iptables -A INPUT -i eth0 -p TCP --dport 22 -j ACCEPT
    iptables -A OUTPUT -o eth0 -p TCP --sport 22 -j ACCEPT
    поправьте если я не прав в правилах, я только учусь
    Не всегда же мы будем в локали? Конечно лучше всего перенастроить ssh на другой порт, но об этом не в этой статье.
    Автору спасибо огромное за статью!

    ВідповістиВидалити
  54. Похоже на то. Правда проверить сейчас негде :(

    ВідповістиВидалити
  55. На счет того что на внешнем интерфейсе будет рубить ssh на корню - информация 100%, правила уже проверил - разрешают 22 порт
    Но столкнулся с тем что в локаль не отдает интернет. С клиентских машин nslookup отрабатывает как то странно, через раз:
    C:\Documents and Settings\user>nslookup - 192.168.0.1
    > google.com
    Server: ubuntu-server.lan
    Address: 192.168.0.1

    DNS request timed out.
    timeout was 2 seconds.
    DNS request timed out.
    timeout was 2 seconds.
    *** Request to ubuntu-server.lan timed-out
    > google.com
    Server: ubuntu-server.lan
    Address: 192.168.0.1

    Non-authoritative answer:
    Name: google.com
    Addresses: 173.194.69.139, 173.194.69.100, 173.194.69.101, 173.194.69.102
    173.194.69.113, 173.194.69.138

    >
    пинги ходят только по локали:
    C:\Documents and Settings\user>ping 192.168.0.1

    Обмен пакетами с 192.168.0.1 по 32 байт:

    Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64
    Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64
    Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64
    Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64

    Статистика Ping для 192.168.0.1:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
    Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

    C:\Documents and Settings\user>ping 192.168.10.110 (внешний интерфейс)

    Обмен пакетами с 192.168.10.110 по 32 байт:

    Ответ от 192.168.10.110: число байт=32 время=1мс TTL=64
    Ответ от 192.168.10.110: число байт=32 время<1мс TTL=64
    Ответ от 192.168.10.110: число байт=32 время<1мс TTL=64
    Ответ от 192.168.10.110: число байт=32 время<1мс TTL=64

    Статистика Ping для 192.168.10.110:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
    Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 1 мсек, Среднее = 0 мсек

    C:\Documents and Settings\user>ping google.com

    Обмен пакетами с google.com [173.194.69.101] по 32 байт:

    Превышен интервал ожидания для запроса.
    Превышен интервал ожидания для запроса.
    Превышен интервал ожидания для запроса.
    Превышен интервал ожидания для запроса.

    Статистика Ping для 173.194.69.101:
    Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),

    Хотелось бы получить подсказку что может быть не так? (squid стоит и настроен как в инструкции)

    ВідповістиВидалити
  56. Сложно что то сказать не видя систему.
    По поводу предидущего комментария: похоже что нужно юзать IPTABLES -t filter -A INPUT...

    ВідповістиВидалити
  57. Все заработало, не знаю что, но что-то явно повисло т.к. после ребута все стало на круги своя
    Еще раз спасибо автору за How-To!

    ВідповістиВидалити

Дописати коментар

Популярні публікації