Шлюз (NAT) + DHCP-сервер на OpenBSD

Обсуждения, связанные со статьями.

Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение Raven2000 » 27 июн 2011, 21:05

Обсуждение статьи Шлюз (NAT) + DHCP-сервер на OpenBSD
Все вопросы касающиеся проблем и дополнений к статье пишите в этой теме.
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Аватара пользователя
Raven2000
-=_UNIX_=-
-=_UNIX_=-
 
Сообщения: 680
Зарегистрирован: 14 сен 2010, 13:08
Откуда: Там, где нас нет.
Благодарил (а): 1 раз.
Поблагодарили: 37 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 29 июн 2011, 10:39

А также настроить встроенный пакетный фильтр (pf) на работу в качестве NAT (Network Address Translation). Делается это в файле конфигурации /etc/pf.conf с помощью параметра nat-to, например так:

Код: Выделить всё
pass out on $ext_if from 172.18.7.0/16 nat-to 10.135.62.26


В данном случае мы перенаправляем весь трафик из внутренней (локальной) сети 172.18.7.0 на адрес провайдера (или модема) 10.135.62.26.
Обратите внимание на переменную $ext_if. Вместо неё должно быть подставлено название внешнего интерфейса (который подключён к сети провайдера). Обычно она определяется в самом начале pf.conf примерно следующим образом:

Код: Выделить всё
ext_if="fxp0" # если fxp0 имеет адрес 10.135.62.26, как в нашем примере


я б не поленился и сделал бы ещё строчку:
Код: Выделить всё
int_if="fxp1" # если fxp1 - 172.18.7.0/16

тогда правило было бы:
Код: Выделить всё
pass out on $ext_if from $int_if nat-to 10.135.62.26

+ надо добавить такой нюанс:
если адрес будет динамический то надо вместо ext_if вписывать имя интерфейса в круглых скобках что бы при его смене pf мог перестроить правила
ЗЫ как то не кошерно юзать ипы вместо имён интерфейсов или макросов, при смене ипа придётся переделывать весь конфиг., вместо замены одной строчки вначале файла, типа:
Код: Выделить всё
ext_ip="10.135.62.26/32"

тогда соответственно:
Код: Выделить всё
# макросы
ext_ip="10.135.62.26/32"
ext_if="fxp0" # 10.135.62.26/32
int_if="fxp1" # 172.18.7.0/16
# правила или чё там дальше ))
pass out on $ext_if from $int_if nat-to $ext_ip
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение Сергей » 29 июн 2011, 11:26

Спасибо за дополнение! Можно конечно и так сделать, но обычно у сервера статический IP-адрес в сети. А вот провайдер действительно может давать динамический, или же он может меняться как-то ещё. Поэтому в статье дана переменная ext_if на такой случай.
А что касается IP-адресов вместо имён, так это делается для уменьшения пересылок и преобразований. Ведь машины между собой общаются только по идентификаторам (MAC и IP), а имена они не понимают.
Сергей
 

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 29 июн 2011, 13:41

Сергей писал(а):Спасибо за дополнение! Можно конечно и так сделать, но обычно у сервера статический IP-адрес в сети. А вот провайдер действительно может давать динамический, или же он может меняться как-то ещё. Поэтому в статье дана переменная ext_if на такой случай.
А что касается IP-адресов вместо имён, так это делается для уменьшения пересылок и преобразований. Ведь машины между собой общаются только по идентификаторам (MAC и IP), а имена они не понимают.

под именами я имел в виду имена интерфейсов rl0, fxp0, em0 и т.д.
а по поводу int_if можно будет один и тот же конфиг переносить на другие сервера, с минимальными изминнениями 8)
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 29 июн 2011, 13:55

вот кусок моего конфига правда это на фрю но всё же :)
Код: Выделить всё
uname -rm
8.2-RELEASE-p1 i386

переменные которые потом легко менять:
Код: Выделить всё
sudo cat /etc/pf.conf
####МАКРОСЫ####
ext_if="fxp0" #Внешний интерфейс
int_if="fxp1" #Внутренний интерфейс

icmp_types="{ echoreq, unreach }"
nat_tcp_udp="{ http, https, rdp, smtps, smtp, 587, pop3, pop3s, imap, imaps, ntp, nntp, domain, ssh, smtps, smtp, 210, 5222 }"
proxy_tcp_udp="{ ftp, ftp-data, domain, http, https, 591, 587, 210, 280, 488, 777, 8000, 8080, 8087, 8090, 8888 }"
user_proxy_port="{ domain, http, 8000, 8080, 8087, 8090, 8888 }"
user_nat_port="{ cvsup, ftp, ftp-data, https, rdp, smtps, 587, pop3, pop3s, imap, imaps, ntp, nntp, domain, ssh, z39.50, xmpp-client, 933 }"
nfs_serv="{ 192.168.1.253/32 }"

table <root> persist file "/etc/pfacl/pf.root"
table <admin> persist file "/etc/pfacl/pf.admin"
table <administrativ> persist file "/etc/pfacl/pf.administrativ"
table <student> persist file "/etc/pfacl/pf.student"
table <dnsslave> persist file "/etc/pfacl/pf.dnsslave"
table <white> persist file "/etc/pfacl/pf.white"
table <badip> persist file "/etc/pfacl/pf.badip"
table <mailru> persist file "/etc/pfacl/pf.mailru"
table <goodip> persist
table <sshguard> persist
table <sshblock> persist

set limit states 200000
set limit table-entries 200000
set loginterface $ext_if
set skip on lo0 #пропускаем проверку на петле
set block-policy drop
set timeout { frag 10, tcp.established 3600 }

scrub in all fragment reassemble #собираем все части пакета перед отправкой

#Очереди, полоса - 20мбит, режем исходящий трафик от сервера с стороны внешнего интерфейса tun0.
#altq on $ext_if cbq bandwidth 19800Kb queue { qssh, qhttp, qdns, qack, qftp }
.
.
.


а вот тут как раз вся прелесть этих переменных и таблиц:
Код: Выделить всё
######## DNS
pass in proto udp from any to any port 53
pass in proto tcp from <dnsslave> to any port 53
#pass out log proto tcp from any to <dnsslave> port 53 no state queue qdns
######## NTP
pass in on $int_if proto { tcp, udp } from any to $int_if port { 123 } #разрешаем самбу
######## SAMBA
pass in on $int_if proto { tcp, udp } from any to $int_if port { 137:139 } #разрешаем самбу
pass in on $int_if proto { tcp, udp } from any to $int_if port { 445 } #разрешаем самбу
######## FTP
pass in proto tcp from any to $ext_if port ftp keep state #разрешаем pure-ftpd
pass in proto tcp from any to $ext_if port ftp-data keep state #разрешаем pure-ftpd
pass in proto tcp from any to $ext_if port { 49151:49999 } keep state #разрешаем pure-ftpd
######## NFS
pass in on $int_if proto { tcp udp } from $nfs_serv to $int_if port { 111 } keep state
pass in on $int_if proto tcp from $nfs_serv to $int_if port { 703 } keep state
pass in on $int_if proto tcp from $nfs_serv to $int_if port { 892 } keep state
pass in on $int_if proto tcp from $nfs_serv to $int_if port { 998 } keep state
pass in on $int_if proto tcp from $nfs_serv to $int_if port { 2049 } keep state
######## JABBER
pass in proto tcp from any to $ext_if port 5222 keep state #разрешаем XMPP
pass in proto tcp from any to $ext_if port 5223 keep state #разрешаем XMPP
pass in proto tcp from any to $ext_if port 5269 keep state #разрешаем XMPP
pass in proto tcp from any to $ext_if port 5280 keep state #разрешаем XMPP
######## ALL
.
.
.
.
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 29 июн 2011, 14:18

+ ко всему не увидел ни слова про DNS а это ой как надо :D
я сам в первый раз дня три парился пока не понял что из за этого ничего не работает
тут www.ignix.ru/public/daemon/easy-nat-pf начиная со строк:
P.S. ВАЖНО!
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение Raven2000 » 29 июн 2011, 14:43

Надо дописывать статью однозначно.
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Аватара пользователя
Raven2000
-=_UNIX_=-
-=_UNIX_=-
 
Сообщения: 680
Зарегистрирован: 14 сен 2010, 13:08
Откуда: Там, где нас нет.
Благодарил (а): 1 раз.
Поблагодарили: 37 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение Сергей » 30 июн 2011, 10:56

Raven2000 писал(а):Надо дописывать статью однозначно.


Если дописать эту статью, то изначальная идея простоты, краткости и доступности потеряет смысл. Этак статейка создана для начинающих энтузиастов, у которых есть желание попробовать сделать свой сервак на BSD. А вот написать новую статью с деталями по настройке пакетного фильтра, как предложил ttys, было бы совсем неплохо. Прошу Вас, господа, не стесняйтесь, внесите свой вклад в популяризацию BSD-систем в Рунете! У нас так не хватает хороших описаний для русскоязычного населения.
Сергей
 

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 30 июн 2011, 14:40

Сергей писал(а):
Raven2000 писал(а):Надо дописывать статью однозначно.


Если дописать эту статью, то изначальная идея простоты, краткости и доступности потеряет смысл. Этак статейка создана для начинающих энтузиастов, у которых есть желание попробовать сделать свой сервак на BSD.

повторюсь про dns!!! у энтузиастов не знающих этих нюансов не будет нихрена работать.
так что надо дописАть что указывать в качестве dns или рассказать как его поднять. (хотя бы прозрачный чтобы резольвил. без регистрации домена и настройки зон)
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 30 июн 2011, 14:42

я тебе линк давал там 2 строчки в намедконф сделать и одну в рцконф и всё, днс будет работать
ИМХО а вообще если уже начал писать то лучше разжёвывать всё :)
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.

Re: Шлюз (NAT) + DHCP-сервер на OpenBSD

Непрочитанное сообщение ttys » 30 июн 2011, 14:51

Сергей писал(а):А вот написать новую статью с деталями по настройке пакетного фильтра, как предложил ttys, было бы совсем неплохо. Прошу Вас, господа, не стесняйтесь, внесите свой вклад в популяризацию BSD-систем в Рунете! У нас так не хватает хороших описаний для русскоязычного населения.

Сам когда то искал статьи по pf на русском но есть Book.of.PF.2nd.Edition или если так сильно надо на русском то тут можно прочитать
только вот как показывает практика никто не хочет читать и тупо переносят примеры конфигов хотя мона на форуме спросить или кому нить в личку написАть
я не знаю с чем это связано, толь боязнь выглядеть глупо (хотя с чужим конфигом в котором куча ненужного хлама так и получается) то ли ещё что то но зря писАть 10ти томные маны по фаерволу который читать никто не будет как то не хочется :(
Аватара пользователя
ttys
*BSD
*BSD
 
Сообщения: 189
Зарегистрирован: 15 сен 2010, 08:42
Откуда: Ростов-на-Дону
Благодарил (а): 5 раз.
Поблагодарили: 3 раз.


Вернуться в Статьи

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron