суббота, 15 января 2011 г.

Настройка PPPOE сервера.

Ну а сегодня пожалуй поговорим о настройке PPPOE сервера.
Что это такое смотрим здесь. В роли сервера у нас будет выступать pppoe-server входящий в пакет rp-pppoe, разработанный компанией roaring penguin inc.
Итак поехали: для начала ставим пакет (есть в стандартных репах)
yum install  -y rp-pppoe
После инсталляции правим файлик /etc/ppp/pppoe-server-options и приводим его к след. виду:

name pppoe
local
proxyarp
logfile /var/log/log.pppoe
#require-pap
require-chap
#require-mschap
#require-mschap-v2
lcp-echo-interval 20
lcp-echo-failure 3
ms-dns XX.XX.XXX.XXX #Ваш DNS сервер
ms-dns 8.8.8.8
netmask 255.255.255.0
nobsdcomp
lock

Вслучае с kernel mode конфиг будет такой:


name pppoe
logfile /var/log/pppoe.log
require-chap
ktune
lcp-echo-interval 20
lcp-echo-failure 3
ms-dns 192.168.102.1
netmask 255.255.255.0
mtu 1480
mru 1480
default-asyncmap
nodeflate
nobsdcomp
noccp
noendpoint
noipdefault
noipx
novj
receive-all



Прописываем в файле chap-secrets логины и пароли клиентов
USER   pppoe  PASS  192.168.102.12
И все далее его просто запускаем командой

pppoe-server -I eth1 -L 192.168.102.1 -R 192.168.102.2 - для userspace
pppoe-server -k -I eth1 -L 192.168.102.1 -R 192.168.102.2 -для kernel mode

где -I  --интерфейс который слушает демон 
-L   -- локальный ip сервера 
-R  -- начальный адрес клиента

ВСЕ.

воскресенье, 9 января 2011 г.

DHCPD

Итак продолжим, я надеюсь что все знают что такое dhcp. Ну а как его настроить я и расскажу вам сегодня. По старой традиции приведу конфиг и по ходу пьесы прокомментирую.

/etc/dhcpd.conf :


ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
#сеть и маска 
option routers 192.168.0.1; # шлюз по умолчанию который будет отдавать клиентам
option subnet-mask 255.255.255.0; # маска

option nis-domain "example.com"; # имя домена nis (ну мало ли кому пригодится)
option domain-name "example.com"; # имя домена DNS
option domain-name-servers 192.168.0.1;  # сам DNS сервер

option time-offset 10800; # GMT+3 ну тут думаю все понятно (временная зона)
option ntp-servers 192.168.0.1; # сервер ntp
option netbios-name-servers 192.168.0.1; # сервер netbios 

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255; # широковещательный адрес

range 192.168.0.10 192.168.0.250; # диапазон из которого выдаются адреса
default-lease-time 432000;  # стандартное время на которое выдается ip
max-lease-time 4320000; # максимальное время на которое выдается ip

         # ну и пример того как закрепить за машиной конкретный ip адрес
host test { # имя хоста (да какое хотите такое и ставьте)
hardware ethernet 00:24:8c:7a:8d:f4;  # mac адрес
fixed-address 192.168.0.240;   #ip адрес
}
}

Ставится сам сервер крайне просто:
yum install -y dhcp
В стандартных репах присутствует.
P.S. Не запутайтесь в скобочках и точках с запятой.

Простенький PPTP server

Как -то раз поставили передо мной такую задачу - настроить PPTP сервер, для того чтобы раздавать интернет юзверям в одной конторе.
Ну прям таки скажем задача проще некуда, но на всякий случай опишу как это делается (мало ли кому пригодится).
    Для начала нам необходимо установить этот самый pptp сервер во многих дистрибутивах он есть но вот например в CentOS его нет, чтож исправим это доустановив  соответствующий репозитарий:
rpm -Uvh http://pptpclient.sourceforge.net/yum/stable/rhel5/pptp-release-current.noarch.rpm
Далее установим сам демон:
yum install -y pptpd
После инсталляции нам необходимо поправить два файла(далее просто приведу их содержание)
1) /etc/pptpd.conf
ppp /usr/sbin/pppd
option /etc/ppp/options.pptpd
logwtmp
connections 250
#(далее следуют ip виртуальной сети)
localip 192.168.100.1
remoteip 192.168.100.2-251 
2) /etc/ppp/options.pptpd

name pptpd
require-pap
require-chap
#(в качестве DNS серверов можете прописать сервера провайдера или гугла)
ms-dns 8.8.8.8
ms-dns 192.168.0.1
#debug
lock
nobsdcomp 
novj
novjccomp
nologfd


Ну вот собственно и все теперь осталось только завести пользователей в файле /etc/ppp/chap-secrets  и включить NAT[смотри пост про iptables] (ну или вкорячить прозрачную проксю).

P.S. Если увидите в логах ерунду подобную этой:
pptpd[2474]: GRE: Bad checksum from pppd.
pptpd[2474]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
не пугайтесь все нормально это у pptpd отродясь, разработчики уже давно на этот баг заби и просто задокументировали его.
А как известно - задокументированный баг - это не баг, а фича. :-)

вторник, 12 октября 2010 г.

Bind 9

BIND 9
Давненько я ничего не писал, ну чтож приступим...
В этой заметке будет рассмотрена конфигурация DNS сервера Bind версии 9 на примере CentOS 5. Разочарую сразу, никаких "откровений" или тонкостей настроек не ждите, будет рассмотрена простенькая конфигурация, единственное что мы сделаем так это настроим Bind так чтобы он работал в chroot окружении. А работать он у нас будет в качестве DNS форварда и плюс ко всему будет поддерживать собственную зону example.com, видимую только из локальной сети. (Для большинства небольших компаний этого хватит за глаза, ну а тем кто хочет большего пара ссылок в конце заметки и google в помощь.)

yum install bind bind-chroot caching-nameserver

(пакет bind - собственно сам dns сервер
пакет bind-chroot - файлы конфигурации и скрипты необходимые для переноса bind в chroot
пакет caching-nameserver - файлы конфигурации "заточенные" для работы bind в качестве dns форварда и кеширующего сервера)
После установки пакетов, лезем в /var/named/chroot/etc и открываем в любимом текстовом редакторе файлик named.conf.

options {
listen-on port 53 { 127.0.0.1; 192.168.0.1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
                  statistics-file "/var/named/data/named_stats.txt";
                  memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; };
allow-query-cache { localhost; 192.168.0.0/24; };
                  };
                  logging {
                  channel default_debug {
                  file "data/named.run";
                  severity dynamic;
                  };
};
view localhost_resolver {
match-clients { localhost; };
match-destinations { localhost; };
recursion yes;
include "/etc/named.rfc1912.zones";
};

view chop_network {
match-clients { 192.168.0.0/24; };
match-destinations { 192.168.0.0/24; };
recursion yes;
forwarders { 8.8.8.8; 8.8.4.4; };
forward only;
include "/etc/named.rfc1912.zones";
zone "example.com" IN {
type master;
file "/etc/example.zone";
allow-update { none; };
};
};

Думаю, что поменять вы уже и так догадались (да-да ip адреса и названия зон).
После чего нам необходимо создать файл описания зоны example.com
touch example.zone
ну и копипастим туда примерно это:
$TTL 86400
@             IN SOA              example.com. root.example.com. (
100 ; serial
1H ; refresh
1M ; retry
1W ; expiry
1D) ; minimum
@            IN NS                       192.168.0.1
@            IN A                         192.168.0.1
ns1          IN A                         192.168.0.1
@           IN MX         10         192.168.0.1
mail         IN A                         192.168.0.1
WWW   IN A                          192.168.0.1

ну и потом конечно создаем симлинк (мягкую ссылку) на этот файлик
ln -s /var/named/chroot/etc/example.zone /etc/example.zone

Ну собственно вот и все далее:
service named start
chkconfig named on
Удачи!


вторник, 29 июня 2010 г.

Squid


Ну а сегодня, в качестве главного блюда, у нас прокси сервер Squid (кальмар).
Ну что тут сказать о сквиде можно написать не просто статью а наверно даже целую книгу.
Это один из самых популярных http и ftp прокси серверов на данный момент, и в общем-то он не зря пользуется такой славой, ведь по возможностям скорости работы и надежности ему очень сложно найти замену.
Для начала нам необходимо понять что такое ACL, для тех же кто не понял с первого раза я объясню на пальцах что это такое в конце поста.
И так без долгих разговоров приведу пример простенького конфига:

# какой адресс и порт слушает
http_port 192.168.0.1:3128
icp_port 0
#видимое имя
visible_hostname proxy
# не кэшировать скрипты
acl QUERY urlpath_regex cgi-bin/?
no_cache deny QUERY
# объем оперативки который кушает
cache_mem 1024 MB
# путь до кэша
cache_dir ufs /var/spool/squid 20000 16 256
# логи кэша
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
logfile_rotate 0
# фтп
ftp_user anonymous@
ftp_list_width 32
ftp_passive on
ftp_sanitycheck on
#днс

# ACL просто группы и порты
acl server src 192.168.0.1/32
acl users src 192.168.0.2-192.168.0.200/32
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl CONNECT method CONNECT

# разрешаем доступ для асиэлок
http_access allow server
http_access allow users
http_access deny !Safe_ports
http_access deny all

#Запрещаем ICP-доступ всем
icp_access deny all

# редиректор у нас режик
redirect_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf

Вы наверняка обратили внимание на последнюю строчку.
Параметр redirect_program указывает на внешнюю программу (редиректор), которая отвечает за легитимность запросов.
Что такое режик, как его установить и использовать можно прочитать здесь, я же скажу что это довольно быстрый и легкий в настройке редиректор.
Ну и как обещал немного о ACL. В контексте сквида ACL - это просто списки. В списках этих могут содержаться например ваши пользователи или запрещенные сайты или например ip адреса машин с которых имеется доступ к web. Синтаксис очень простой:
acl "название списка" "его тип" "сам список" Например:
acl my_local_user src 192.168.0.25/32 или
acl banned_site dstdomain vkontakte.ru
Сами по себе ACLи не разрешают и не запрещают, они просто группируют объекты по какому либо признаку. А вот запрещает или разрешает параметр http_access:
http_access allow my_local_user
http_access deny banned_site
http_access deny all
Соответственно работают ACL до первого соответствия, с верху в низ. Так например если вы выше по тексту запретили какому то пользователю доступ с сайту (например к google)
а потом разрешили этот сайт всем то доступ к нему будут иметь все, кроме этого пользователя.
Если мы хотим чтобы сквид работал в режиме прозрачного прокси (когда настраойка браузера не требуется а прокси работает так словно его и нет{на самом деле то он есть и логи ведутся :) }) то в строке http_port 192.168.0.1:3128 надо дописать параметр transparent вот так :
http_port 192.168.0.1:3128 transparent
ну и соответственно настроить iptables (как это делается смотри соответствующий пост).
Теперь немного о логах и о том что с ними делать - ответ прост: обрабатывать. Сделать это можно например с помощью утилиты SARG или Mysar или lightsquid.
Что касается запуска сквида, то первый запуск необходимо выполнять следующим образом:
squid -z (этой командой сквид создаст директории необходимые ему для хранения кэша).
Ну вот вроде и все, конфиг что я привел на самом деле очень просто, так что у вас не должно возникнуть особых трудностей.
P.S. Конфиг сквида сам по себе очень неплохо документирован и там есть очень многое, так что RTFM. :)