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

На момент написания статьи, последним стабильным релизом Ubuntu Server был Jaunty. Karmic, который еще на стадии преальфы, рассматривать пока что рано. Железо для шлюза есть следующее:
Да-да, именно свободный денек. У читателей статьи весь процесс займет около получаса, вместе с установкой системы. У меня же не было подробного пошагового руководства, потому целый день собирал по крупицам сведения.
От читателя требуются такие же желания, базовые знания сетей и сетевых технологий, более или менее прямые руки, умение думать.
Также рекомендую не забывать делать резервные копии всех файлов, которые мы будем изменять.
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:
После редактирования файл должен иметь примерно такой вид:
В серверной, как обычно, кондиционер дует в полную - холодно. Теперь, когда сеть настроена, можно пересаживаться за ноутбук или рабочую машину в более теплом месте и настраивать сервер удаленно. Для этого на удаленной машине набираем:
После установки рекомендуется получить актуальные версии всех пакетов:
Теперь начнем настраивать собственно серверное программное обеспечение. Первым из списка будет DNS сервер. Инсталлируем:
Теперь на компьютере из локальной сети пробуем:
6. Настройка proxy.
Даже при широкополосном канале в сеть Интернет, более половины трафика от браузера повторяется от пользователя к пользователю. Частично с этим борется кеш самого браузера, но гораздо эффективнее и централизовано с этим справится серверный кеширующий прокси сервер. Также при помощи прокси сервера можно управлять доступом пользователей к определенным ресурсам, управлять скоростью, резать рекламные банеры и еще много чего. Сейчас мы сделаем лишь базовую настройку прокси. В качестве программы прокси сервера будем использовать Squid. На момент написания статьи в репозиториях Ubuntu лежала третья версия этого старейшего и лучшего прокси.
Устанавливаем, останавливаем:
NAT - это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Суть механизма состоит в замене адреса источника (source) при прохождении пакета в одну сторону и обратной замене адреса назначения (destination) в ответном пакете. Наряду с адресами source/destination могут также заменяться номера портов source/destination.
Так как я не нашел механизма в Linux, который сохранял бы все настройки iptables при перезагрузке сервера или сети, то его настройку вынесем в отдельный файл скрипт, который будет запускатся при активировании сети.
Создаем этот скрипт и открываем для редактирования:
Далее содержимое, с моими комментариями:
8. DHCP
DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической конфигурации узла) - это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP.
Устанавливаем и останавливаем:
Редактируем конфиг:
ВСЕ. Теперь наш сервер умеет раздавать "Интернет" в локальную сеть, а также кешировать http трафик. Также умеет преобразовывать интернет имена в ip, раздавать компьютерам локальной сети необходимые для работы настройки.
Это базовая настройка. В дальнейшем мы обязательно прикрутим фильтрацию рекламы, небольшой потоковый антивирус, управление и балансировку канала и трафика (QoS), и может быть что то еще хорошее. Следите за блогом.
На момент написания статьи, последним стабильным релизом 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 interfaceeth0 у меня смотрит в локальную сеть, а eth1 подключена к интернет провайдеру. Перезапускаем сеть:
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
sudo /etc/init.d/networking restartПроверяем:
ping ya.ru3. Удаленное администрирование.
В серверной, как обычно, кондиционер дует в полную - холодно. Теперь, когда сеть настроена, можно пересаживаться за ноутбук или рабочую машину в более теплом месте и настраивать сервер удаленно. Для этого на удаленной машине набираем:
ssh 172.16.0.2544. Обновления.
После установки рекомендуется получить актуальные версии всех пакетов:
sudo apt-get update5. Настраиваем DNS.
sudo apt-get upgrade
Теперь начнем настраивать собственно серверное программное обеспечение. Первым из списка будет 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 start7. настраиваем 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 {Если мы хотим, чтобы определенным компьютерам всегда выдавался заданный ip-адрес - дописываем:
range 172.16.0.1 172.16.0.252;
}
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
Это базовая настройка. В дальнейшем мы обязательно прикрутим фильтрацию рекламы, небольшой потоковый антивирус, управление и балансировку канала и трафика (QoS), и может быть что то еще хорошее. Следите за блогом.
> error_directory /usr/share/squid/errors/Russian-koi8-r
ВідповістиВидалитиПочему не UTF-8?
Потому что нет:
ВідповістиВидалити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
А украинская есть:
ВідповістиВидалитиdrwxr-xr-x 2 root root 4096 2009-06-27 21:20 Ukrainian-utf8
Да, есть. Мне не принципиально.
ВідповістиВидалитиacl "net" {
ВідповістиВидалити172.16.0.0/24;
127.0.0.1;
85.90.192.9;
195.234.220.8;
85.90.192.8;
};
приветствую! Мне бы хотелось уточнить, что это за последние три адреса. заранее благодарен
Анонимный, это dns-сервера моего провайдера.
ВідповістиВидалити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};
наверное будет правильнее.
Да, так безопаснее. Спасибо.
ВідповістиВидалитиЗдравствуйте, уважаемый автор!
ВідповістиВидалитиОчень благодарен за проделанную работу по написанию данного 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?
Хм.. Распространенный вариант, но я не сталкивался. Проверить сейчас негде, так что попробуйте и отпишите о результатах. На первый взгляд все должно работать.
ВідповістиВидалитиСпасибо! статья очень пригодилась ... хотелось бы еще биллинг прицепить ...
ВідповістиВидалитиСтатья хороша! Но, уже в начале появились проблемы. После networking restart на экране: if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing nfs mounts. Вы не в курсе, что бы это могло значить??? Заранее, спасибо.
ВідповістиВидалитиАнонимный, ничего страшного не значит. Просто NFS перемонтируется каждый раз после ifup для eth1.
ВідповістиВидалитиПосле того как воткнул NAT настройки пишет:
ВідповістиВидалити/bin/sh: /etc/nat-up: Permission denied
Failed to bring up eth1.
че делать? :)
Анонимный, дать права на выполнение скрипта
ВідповістиВидалитиДобрый день. Такая проблема:
ВідповістиВидалити1)if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing nfs mounts
2) Starting DHCP server dhcp3 OK.
Клиенты не получают адреса.
Ждем Chapter Two!
ВідповістиВидалитиЄвген, пакеты бегают до клиентов? wireshark поможет посмотреть.
ВідповістиВидалитиПодскажите пожалуйста а для отображения страниц браузером настраивать proxy обязательно??? А то у меня крайне странная ситуация DNS работает(имена в ip превращаются на клиенте) NAT тоже вроде работает (по полученным ip пинг проходит) а через браузер заходить отказывается. У меня к серверу инет заходит через pptp.
ВідповістиВидалитиП.С. А может ли провайдер закрыть возможность подключить втроую машину??
Анонимный, не обязательно настраивать прокси. Но если нужно резать рекламу или еще какие фильтры - то нужно. Браузер как отказывается? Ошибка?
ВідповістиВидалитиПровайдер видит только ваш сервер, вторую машину он физически видеть не сможет и заблокировать тоже.
firefox очень долго думает а потом сообщает "время ожидания ответа от сервера ya.ru истекло" хотя в консоли он отлично проходит ping и tracepath. Но tracepath с клиента и с сервера немного отличаются друг от друга, при tracepath с клиента пропускается один локальный сервер. У меня проблема в настройке NAT??
ВідповістиВидалитиАнонимный, ну вы бы выложили сначала эти трассы.
ВідповістиВидалитиИ резудьтат wget ya.ru
НАТ все запросы на 80 порт перенаправляет на прокси (на 3128 порт). А прокси вы не ставили. Вероятно проблема в этом. Или убирайте перенаправление, или ставьте прокси.
Спасибо Автору, все очень оказалось полезным, некоторые настройки конечно пришлось искать в другом месте но основа сдесь доступно и понятно описана. ОГРОМНОЕ СПАСИБО!
ВідповістиВидалитиотличная статья. Помогла. А когда же продолжение выйдет? сквид нужно настроить на ограничение скорости инета
ВідповістиВидалитиПока что нет времени дописать, так как в продакшене использую FreeBSD, а дома dd-wrt..
ВідповістиВидалитиостается в настройке iptables заменить
ВідповістиВидалитиiptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
на
iptables -P INPUT DROP
iptables -P FORWARD DROP
иначе ваш сервер готов к подключениям извне, по всем портам, которые он слушает! :-)
в правилах для IPTABLES,
ВідповістиВидалитив строках
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
надо заменить на DROP, иначе порты будут открыты наружу.
Вообще говоря да. Спасибо, исправил.
ВідповістиВидалитиСпасибо, коллега! Все понятно и без лишней воды.
ВідповістиВидалитиТакое впечатление, что nat-up не запускается (права на исполнение установил), локалка есть,DHCP работает,а инета в локалке нет. Подскажите кто может, плиз.
ВідповістиВидалитиУ меня проблема. DHCP работает но интернет не раздает, в чем проблема??? Пожалуйста помоги!)
ВідповістиВидалитиto Анонимный.
ВідповістиВидалитивозможно у вас в интернет смотрит eth0 а в локалку eth1. тогда в nat-up надо будет поменять эти обозначения. у меня тоже не работало, до этого
to Михаил, а как DHCP должен раздавать интернет?
ВідповістиВидалитиАвтор видалив цей коментар.
ВідповістиВидалитиАвтор видалив цей коментар.
ВідповістиВидалитиАвтор видалив цей коментар.
ВідповістиВидалитивобщем у меня провайдер выдает статичные айпи у меня сделано так:
ВідповістиВидалити# 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...
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
Вопрос: Почему не раздает интернет...
У меня DHCP на win2003. Я раздаю параметры 003 006 066 067.(это нужно для загрузки тонких клиентов по сети) Можно ли сделать подобное dhcp3-server
ВідповістиВидалитиМожно. Открываем ман, ищем необходимые параметры и добавляем в конфиг.
ВідповістиВидалитиизвините, что за ip 17.16.0.1
ВідповістиВидалититам разве не должно быть server 172.16.0.254 или Я чегота не понимаю. спасибо...
где?
ВідповістиВидалитиРебята здесь настройки для iptables даны неправильно ...ну или во всяком случае у меня они так и не заработали
ВідповістиВидалити:) Чтобы заработали нужно сделать все правильно..
ВідповістиВидалитиДобрый день, не могу решить проблему
ВідповістиВидалитиНужно чтобы в инет ходили только те 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
Подкорректируйте с комментарием пожалуйста
Спасибо большое за HOWTO - заработало без проблем.
ВідповістиВидалитиИнтересует один лишь вопрос - для чего поднимать dns-сервер, ведь проще раздать по dhcp адрес dns-сервера провайдера или Google?
Поправьте, если ошибаюсь.
А для того, чтобы иметь адреса типа server.max, laptop.max и тп внутри своей сети :) Удобно.
ВідповістиВидалитиДля Ubuntu 10.04 LTS параметр cache_dir ufs /var/spool/squid 4096 32 256 - неверен.
ВідповістиВидалитиТам другая папка - cache_dir ufs /var/spool/squid3
Из-за этой ошибки squid не принимает подключения.
Не знаю, как на других версиях Ubuntu.
Поменяли. Будем знать, спасибо.
ВідповістиВидалити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
>
куда копать?
Пробел после минуса забыл.
ВідповістиВидалитиспасибо, заработало! кст, создал тему на форуме убунты http://forum.ubuntu.ru/index.php?topic=158032.0 , предлагаю там тоже обсуждать, во всяком случае там удобнее описывать проблемы))
ВідповістиВидалитиДобрый день, спасибо за статью.
ВідповістиВидалитиВозникло пару вопросов:
1. Разве в этой строке не должно быть ...-i eth1 -o eth0 ...
# Запрещаем форвардинг из внешнего мира во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth1 -j REJECT
2. Конструкции такого вида ...NEW -i ! eth1... не воспринимает хочет ...NEW !-i eth1..., на сколько корректно одно и другое?
1. В данном случае корректно, просто режем все из внешней сети, что мы сами не запрашивали.
ВідповістиВидалити2. Вроде корректно, в текущей версии (iptables v1.4.10) действительно поменяли порядок.
"Using intrapositioned negation (`--option ! this`) is deprecated in favor of extrapositioned (`! --option this`)."
АндрейОс, я не проверил, но вероятно
ВідповістиВидалити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
Спасибо. Очень хорошая статья.
ВідповістиВидалитиПо поводу сохранения iptables.
Вот здесь (http://www.azure.org.ua/en/articles/7-Zagruzka_pravil_iptables_pri_zapuske_(Ubuntu_10.04_-_10.10).html) есть чудесное решение.
# Запрещаем форвардинг из внешнего мира во внутреннюю сеть
ВідповістиВидалитиiptables -A FORWARD -i eth1 -o eth1 -j REJECT
тут ошибки нет? может: -i eth1 -o eth0
После применения правил 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 на другой порт, но об этом не в этой статье.
Автору спасибо огромное за статью!
Похоже на то. Правда проверить сейчас негде :(
ВідповістиВидалитиНа счет того что на внешнем интерфейсе будет рубить 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 стоит и настроен как в инструкции)
Сложно что то сказать не видя систему.
ВідповістиВидалитиПо поводу предидущего комментария: похоже что нужно юзать IPTABLES -t filter -A INPUT...
Все заработало, не знаю что, но что-то явно повисло т.к. после ребута все стало на круги своя
ВідповістиВидалитиЕще раз спасибо автору за How-To!