FreeBSD 7 Kernel Nat + Squid

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
folax
мл. сержант
Сообщения: 86
Зарегистрирован: 2008-04-01 17:00:10
Откуда: Украина

FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение folax » 2008-04-02 10:50:33

Привет всем.Помогите пожалуста составить правила для IPFW с натом собраным в ядро.Имееться 2 сетевушки,1 локалка,2 инет,хотелось бы локалку,если это нттр запросы отправлять на сквид,+ позволить принимать и отправлять почту. Вроде перечитал статьи по сотавлению ну чувствую без помощи не обойтись.Всё уже установлено и работоспособно сквид и нат всторенныйц в ядро,остались правила для IPFW.Самое главное хотелось бы понять как в правилах управлять натом? Спасибо. Извиняюсь за вопрос если что не там :oops:
если что то делаешь то что то меняться и будет

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение dikens3 » 2008-04-02 10:59:53

Сейчас по встроенному NAT немного информации (да и людей) в интернете. Искать ответы нужно в Man'ах.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
TeXNiC
мл. сержант
Сообщения: 97
Зарегистрирован: 2007-02-06 12:17:35

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение TeXNiC » 2008-04-02 11:03:27

На форуме пробегало несколько тем по Nat в ipfw, там были примеры правил.
У меня не кривые руки, я просто пока еще мало знаю.

Аватара пользователя
folax
мл. сержант
Сообщения: 86
Зарегистрирован: 2008-04-01 17:00:10
Откуда: Украина

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение folax » 2008-04-02 11:08:32

В том то и дело ща стоит шлюз с 7 фрёй.И вот с такими правилами:

Код: Выделить всё

#!/bin/sh
ipfw='/sbin/ipfw -q'
out_if='vr1'
out_ip='192.168.0.111'
local_if='vr0'
local_ip='192.168.1.111'
local_net='192.168.1.0/24'
${ipfw} flush
#Loopback
${ipfw} add 10 allow all from any to any via lo0
#Natd kernel
${ipfw} add 200 nat 1 tcp from ${local_net} to any 80,8080
${ipfw} add 200 nat 1 tcp from any 80,8080 to ${local_net}
${ipfw} add allow tcp from any to me 25,110
${ipfw} add allow tcp from me to any 25,110
${ipfw} add allow all from any to any
В принципе инет пашет и прокся на базе сквида 3 работает.Токо вот почта не принимаецца и не отправляецца. Хочеться полноценный конфиг написать.
Последний раз редактировалось zingel 2008-11-14 19:10:11, всего редактировалось 1 раз.
Причина: Юзайте [code][/code] предупреждение #1
если что то делаешь то что то меняться и будет

Аватара пользователя
abanamat
сержант
Сообщения: 255
Зарегистрирован: 2007-03-15 11:24:26
Откуда: Питер
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение abanamat » 2008-04-02 17:56:52

в представленном конфиге нет обраток - типа allow ip from any to ${localnet} out

_kirill_
ст. сержант
Сообщения: 311
Зарегистрирован: 2007-05-11 9:41:21
Откуда: Tashkent
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение _kirill_ » 2008-04-03 15:20:46

abanamat писал(а):в представленном конфиге нет обраток - типа allow ip from any to ${localnet} out
${ipfw} add allow all from any to any
???

Аватара пользователя
folax
мл. сержант
Сообщения: 86
Зарегистрирован: 2008-04-01 17:00:10
Откуда: Украина

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение folax » 2008-04-03 15:55:03

Поделитесь если у кого есть рабочий конфиг под 7 фрю и натом встроенным в ядро.
если что то делаешь то что то меняться и будет

nosferaty
ефрейтор
Сообщения: 57
Зарегистрирован: 2007-09-28 10:21:32
Откуда: РФ, Москва
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение nosferaty » 2008-05-26 15:24:59

а еще лучше подкиньте линк на адекватную доку (можно на английском)
в ман тока не посылайте, смотрел уже, чет не совсем понял, желательно не таким сухим текстом.

Аватара пользователя
folax
мл. сержант
Сообщения: 86
Зарегистрирован: 2008-04-01 17:00:10
Откуда: Украина

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение folax » 2008-05-26 15:53:15

Вот рабочий конфиг разобрацца я думаю можно и самому.Тоже кстати с форума.

Код: Выделить всё

#!/bin/sh
ipfw -f flush
oif="rl0"
iif="rl1"
oip="xxx.xxx.xxx.xxx"
iip="192.168.0.1"
dns1="yyy.yyy.yyy.yyy"
#Хождение через loopbask
ipfw add 10 allow all from any to any via lo0

ipfw add 20 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80 via $iif
#------------------------------------------
ipfw nat 1 config if $oif log redirect_port tcp 192.168.0.5:9999 9999
ipfw add 100 nat 1 tcp from any to $oip 9999 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 9999 via $iif
#------------------------------------------
ipfw nat 2 config if $oif log redirect_port tcp 192.168.0.5:9990 9990
ipfw add 100 nat 2 tcp from any to $oip 9990 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 9990 via $iif

#------------------------------------------
ipfw nat 3 config if $oif log redirect_port tcp 192.168.0.5:80 80
ipfw add 100 nat 3 tcp from any to $oip 80 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 80 via $iif

#------------------------------------------
ipfw nat 4 config if $oif log redirect_port tcp 192.168.0.6:7777 7777
ipfw add 200 nat 4 tcp from any to $oip 7777 via $oif
ipfw add 200 allow tcp from any to 192.168.0.6 7777 via $iif

#------------------------------------------
ipfw nat 5 config if $oif log redirect_port tcp 192.168.0.6:7770 7770
ipfw add 200 nat 5 tcp from any to $oip 7770 via $oif
ipfw add 200 allow tcp from any to 192.168.0.6 7770 via $iif

#------------------------------------------
ipfw nat 6 config if $oif log redirect_port tcp 192.168.0.6:7779 7779
ipfw add 200 nat 6 tcp from any to $oip 7779 via $oif
ipfw add 200 allow tcp from any to 192.168.0.6 7779 via $iif

#---------------NAT--------------------------------------
ipfw nat 10 config if $oif
ipfw add 300 nat 10 ip4 from any to any via $oif

#---------------Old config-------------------------------
#Запрет к 255.0.0.0 подсети
ipfw add 400 deny all from any to 127.0.0.0/8
ipfw add 400 deny all from 127.0.0.0/8 to any

#Запрет на наружнем интерфейсе внтреней сети
ipfw add 450 deny all from 192.168.0.0/24 to any via $oif

#Допуск определенных ping'ов
ipfw add 500 allow icmp from any to any in via $oif icmptypes 0,3,8,11
ipfw add 500 allow icmp from any to any out via $oif
ipfw add 500 allow icmp from any to any via $iif

#Запрет сетей
ipfw add 600 deny all from any to 0.0.0.0/8 via $oif
ipfw add 600 deny all from any to 169.254.0.0/16 via $oif
ipfw add 600 deny all from any to 224.0.0.0/4 via $oif
ipfw add 600 deny all from any to 240.0.0.0/4 via $oif

ipfw add 600 deny all from 0.0.0.0/8 to any via $oif
ipfw add 600 deny all from 169.254.0.0/16 to any via $oif
ipfw add 600 deny all from 224.0.0.0/4 to any via $oif
ipfw add 600 deny all from 240.0.0.0/4 to any via $oif

#Разрешения для локалки
ipfw add 700 allow tcp from 192.168.0.0/24 to any via $iif

#Разрешаю ssh 
ipfw add 800 allow tcp from any to any 22 via $iif 

#Разрошение на соединение, не прерывать соединение и получение фрагментир покетов
ipfw add 900 allow all from $oip to any out via $oif setup
ipfw add 910 allow tcp from any to any established
ipfw add 920 allow tcp from any to any frag

#Разрешение DNS
ipfw add 1000 allow udp from $dns1 53 to $oip in via $oif
ipfw add 1000 allow udp from $oip to $dns1 53 keep-state 

#Запрет  NETBIOS 
ipfw add 1100 deny udp from any to any 137,138 via $oif
ipfw add 1100 deny tcp from any to any 135,139 via $oif

#DHCP
#ipfw add 1200 allow udp from any to 192.168.0.1 67 via $iif keep-state

#ssh,smtp,pop,http
ipfw add 1300 allow tcp from any to $oip 22,25,110,80 via $oif setup

#Сброс опознавания
ipfw add 1400 reset tcp from any to $oip 113 via $oif
# FTP
ipfw add 1500 allow tcp from me 21,50000-50100 to any
ipfw add 1500 allow tcp from any to me 21,50000-50100
Последний раз редактировалось Alex Keda 2008-05-26 18:36:28, всего редактировалось 1 раз.
Причина: [code][/code] - для кого?
если что то делаешь то что то меняться и будет

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение f_andrey » 2008-05-26 15:58:28

О как раз седня на глаза попалась любопытная статья :idea:
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение dikens3 » 2008-05-26 17:10:41

f_andrey писал(а):О как раз седня на глаза попалась любопытная статья :idea:
Читал уже.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Volkoff
мл. сержант
Сообщения: 100
Зарегистрирован: 2008-04-22 10:44:55
Откуда: СПб

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение Volkoff » 2008-05-27 23:34:22

А чем статьи с сайта не устраивают? Разжевано все дальше некуда, особенно если комменты читать.
Делал на 7.0 по этим статьям: http://www.lissyara.su/?id=1127 потом http://www.lissyara.su/?id=1375 с учетом http://www.lissyara.su/?id=1536 завелось с полпинка, правда долго мучился с публикацией RDP на другой машине, средствами ядерного ната так и не получилось, поставил из портов socket.

XoXoL
проходил мимо

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение XoXoL » 2008-06-07 7:39:15

Что-то не очень хочет у меня подобная схема работать:
ipfw nat 1 config if $oif log redirect_port tcp 192.168.0.5:9999 9999
ipfw add 100 nat 1 tcp from any to $oip 9999 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 9999 via $iif
Судя по tcpdump при попытке по аналогии сделать веб-сервак, доступный снаружи, в ответных пакетах не подменяется внутренний серый IP адрес на публичный. Что делаю не так? Может кто-нибудь подробнее рассказать про этот синтаксис конфига ната? Своих мозгов не хватает...
З.Ы. а кто подскажет, как сбрасывать конфиги nat'a? Делаю ipfw -f flush, потом ipfw nat show - так как новые, так и старые конфиги... Помогает только reboot.

XoXoL
проходил мимо

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение XoXoL » 2008-06-07 7:49:00

XoXoL писал(а):Что-то не очень хочет у меня подобная схема работать:
ipfw nat 1 config if $oif log redirect_port tcp 192.168.0.5:9999 9999
ipfw add 100 nat 1 tcp from any to $oip 9999 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 9999 via $iif
А вот если добавить что-то типа
ipfw add nat 1 tcp from 192.168.0.5 9999 to any ${outports} #то работает :)

Meloun
проходил мимо

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение Meloun » 2008-11-14 17:46:01

XoXoL писал(а):Что-то не очень хочет у меня подобная схема работать:
Может кто-нибудь подробнее рассказать про этот синтаксис конфига ната? Своих мозгов не хватает...
З.Ы. а кто подскажет, как сбрасывать конфиги nat'a? Делаю ipfw -f flush, потом ipfw nat show - так как новые, так и старые конфиги... Помогает только reboot.
1. Синтаксис конфига встроенного NAT-а весьма подробно расписан тут: man ipfw в секции "NAT"
от себя добавлю. если планируете делать проброс портов для разных сервисов более чем на один адрес, то пишите примерно так:

Код: Выделить всё

${fwcmd} nat 101 config ip 62.148.xxx.xxx reset same_ports \
		redirect_port tcp 172.30.0.1:1723 1723 \
		redirect_proto gre 172.30.0.1 \
		redirect_port udp 172.30.0.2:53 53 \
		redirect_port tcp 172.30.0.2:53 53

2. Сбросить настройки NAT можно следующим образом (нигде манов не нашел, вычислил методом научного тыка): ipfw nat 101 delete - сбрасывает NAT с номером 101, если поднято несколько натов, то такую конструкцию выполнять для каждого со своим номером. Ниже пример конфига

Код: Выделить всё

${fwcmd} nat 101 delete
sleep 1
${fwcmd} nat 101 config ip 62.148.xxx.xxx reset same_ports \
		redirect_port tcp 172.30.0.2:1723 1723 \
		redirect_proto gre 172.30.0.2 \
		redirect_port udp 172.30.0.2:53 53 \
		redirect_port tcp 172.30.0.2:53 53 \
ВНИМАНИЕ!!! sleep 1 нужен для задержки после сброса NAT, на практике при эксплуатации без этой задержки очень часто машина глухо висла при передергивании скрипта. (FreeBSD 7.0-RELEASE-p4 i386)
Последний раз редактировалось zingel 2008-11-14 19:10:53, всего редактировалось 1 раз.
Причина: Юзайте [code][/code] предупреждение #1

Meloun
проходил мимо

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение Meloun » 2008-11-17 13:50:51

sleep 1
как выяснилось при более детальном исследовании, со sleep 1 все равно виснет, реже но виснет, увеличение задержки sleep не помогает, все хорошо работает при небольших значениях счетчиков правил в ipfw (т.е. когда трафика отнатилось совсем немного), если трафик прет через сервер, при попытке передернуть скрипт с правилами машина намертво виснет.

В общем странная ситуация получается, такое впечатление, что ядерный NAT еще сыроват.
Кто что думает по этому поводу?

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение manefesto » 2008-11-17 14:00:45

написать PR?
я такой яростный шо аж пиздеЦ
Изображение

mnz_home
проходил мимо

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение mnz_home » 2009-02-08 13:57:12

Meloun писал(а):ВНИМАНИЕ!!! sleep 1 нужен для задержки после сброса NAT, на практике при эксплуатации без этой задержки очень часто машина глухо висла при передергивании скрипта. (FreeBSD 7.0-RELEASE-p4 i386)
А если так передергивать?

Код: Выделить всё

/etc/rc.d/ipfw restart

Гость
проходил мимо

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение Гость » 2009-05-16 11:51:39

mnz_home писал(а):
Meloun писал(а):ВНИМАНИЕ!!! sleep 1 нужен для задержки после сброса NAT, на практике при эксплуатации без этой задержки очень часто машина глухо висла при передергивании скрипта. (FreeBSD 7.0-RELEASE-p4 i386)
А если так передергивать?

Код: Выделить всё

/etc/rc.d/ipfw restart
А если удаленно, то так:

Код: Выделить всё

/etc/rc.d/ipfw forcerestart

тогда сесия не отвалится :smile: (если конечно конфиг етого не предусматривает)

Аватара пользователя
Dolphin_BSD
ст. сержант
Сообщения: 353
Зарегистрирован: 2007-04-26 9:09:10
Откуда: Kiev
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение Dolphin_BSD » 2009-08-04 18:55:10

День добрый.

Скажите а в 7.2-STABLE FreeBSD что-то изменилось что касается НАТ

на 20 серверах jn 5.4 до 7.0 Релизов, работает проброс портов таким образом :

NAT

Код: Выделить всё

interface rl0
use_sockets yes
dynamic yes
same_ports yes
redirect_port tcp 192.168.168.100:3389 3389

IPFW

Код: Выделить всё

$cmd 1014 divert natd tcp from 192.168.168.100 to any src-port 3389 out via $eif
$cmd 1015 allow tcp from any to 192.168.168.100 dst-port 3389 in via $eif
$cmd 1016 allow tcp from me to any src-port 3389 out via $eif
Поставил выше упомянутую ФРИ и ломаю голову второй день !
Подскажите как теперь править НАТ, бо как говорили тут выше, "своей башки, уже не хватает"

Спасибо.
_______________________________________________________________________________
Каждая секунда жизни имеет собственную цену, которую необходимо вовремя заплатить.
http://www.ftl.com.ua

jetiten
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-10-16 13:15:41

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение jetiten » 2009-10-19 13:28:22

Код: Выделить всё

ipfw nat 1 config if $oif log redirect_port tcp 192.168.0.5:9999 9999
ipfw add 100 nat 1 tcp from any to $oip 9999 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 9999 via $iif
На примере вышеописанного попытался сделать аналогичный редирект но с разными портами. не получается( с инета 9999 прокинуть на локальную машинку 192.168.0.5:9998 и обратно. Исходный вариант работает, предложенный мной нет.

Код: Выделить всё

ipfw nat 1 config if $oif log redirect_port tcp 192.168.0.5:9998 9999
ipfw add 100 nat 1 tcp from any to $oip 9999 via $oif
ipfw add 100 allow tcp from any to 192.168.0.5 9998 via $iif
Подскажите в чем может быть проблема?

Аватара пользователя
MASiK
лейтенант
Сообщения: 625
Зарегистрирован: 2008-09-19 20:09:41
Откуда: Оттуда
Контактная информация:

Re: FreeBSD 7 Kernel Nat + Squid

Непрочитанное сообщение MASiK » 2009-10-20 6:12:03

Нууу как бы нату бы и входить и выходить, я бы сделал так

Код: Выделить всё

ipfw nat 1 config if $oif same_ports redirect_port tcp 192.168.0.5:9998 9999
ipfw add 1 nat 1 ip from 192.168.0.0/24 to any out via $oif
ipfw add 2 nat 1 ip from any to $oip in via $oif
Самурай