Подробное руководство по ipfw nat

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-09 12:31:40

nat из ipfw или natd?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Dwolfix
рядовой
Сообщения: 28
Зарегистрирован: 2010-06-02 7:44:38
Откуда: Орск
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Dwolfix » 2010-06-09 12:43:47

Ключевое правило:

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

add 1040 allow ip from any to any via fxp0
На этих настройках не только с ftp проблем не будет, а с любым исходящим запросом на любой порт.
Бороться за знания, терзать препятствия, аки волк!

Аватара пользователя
Dwolfix
рядовой
Сообщения: 28
Зарегистрирован: 2010-06-02 7:44:38
Откуда: Орск
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Dwolfix » 2010-06-09 12:44:39

Используется ядерный нат, после пересборки
Бороться за знания, терзать препятствия, аки волк!

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-09 13:52:53

все свои правила ipfw покажите, а то телепатия и лечение по фотографии получаются :pardon:

и что показывает

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

sysctl -a | grep one_pass
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Dwolfix
рядовой
Сообщения: 28
Зарегистрирован: 2010-06-02 7:44:38
Откуда: Орск
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Dwolfix » 2010-06-09 14:11:32

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

ns1# sysctl -a | grep one_pass
net.inet.ip.fw.one_pass: 1
Полный конфиг ipfw:

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

#!/bin/sh

cmd="/sbin/ipfw -q add"
cmdr="/sbin/ipfw -q"
ks="keep-state"
lan="em0"
wan="rl0"
ovpn="tun0"
trustip="192.168.1.21"
trustnet="192.168.1.0/24"
vpn="10.100.200.0/24"
ftp="20,21,50000-50100"
mailserv="25,110,143,465,993,995"

ipfw -q -f flush
ipfw -f table all flush


$cmd 00500 check-state

#loopback interface
$cmd 00600 allow ip from 127.0.0.0/8 to any via lo0
$cmd 00700 allow ip from any to 127.0.0.0/8 via lo0
$cmd 00710 deny ip from any to 127.0.0.0/8
$cmd 00720 deny ip from 127.0.0.0/8 to any


#Allow all me traffic
$cmd 00800 allow tcp from me to any $ks
$cmd 00900 allow udp from me to any $ks
$cmd 01000 allow icmp from me to any $ks


#Deny bad hosts
/etc/closed.sh
$cmd 01200 deny ip from any to "table(1)" via rl0
$cmd 01300 deny ip from "table(2)" to any via rl0


#Trust IP
$cmd 01400 allow ip from $trustip to me
$cmd 01500 allow ip from me to $trustip

#Reject private network and multicast from WAN
$cmd 01600 deny ip from any to 192.168.0.0/16 in recv $wan
$cmd 01700 deny ip from 192.168.0.0/16 to any in recv $wan
$cmd 01800 deny ip from any to 172.16.0.0/12 in recv $wan
$cmd 01900 deny ip from 172.16.0.0/12 to any in recv $wan
$cmd 02000 deny ip from any to 10.0.0.0/8 in recv $wan
$cmd 02100 deny ip from 10.0.0.0/8 to any in recv $wan
$cmd 02200 deny ip from any to 169.254.0.0/16 in recv $wan
$cmd 02300 deny ip from 169.254.0.0/16 to any in recv $wan
$cmd 02310 deny ip from any to 0.0.0.0/8 in recv $wan
$cmd 02320 deny ip from 0.0.0.0/8 to any in recv $wan
$cmd 02330 deny ip from any to 240.0.0.0/4 in recv $wan
$cmd 02340 deny ip from 240.0.0.0/4 to any in recv $wan


#DNS
$cmd 02400 allow tcp from any to me domain via $wan limit src-addr 30
$cmd 02500 allow udp from any to me domain via $wan limit src-addr 30
$cmd 02510 allow udp from $trustnet to me domain via $lan
$cmd 02520 allow udp from me domain to $trustnet via $lan



#NTP
$cmd 02600 allow udp from $trustnet to me ntp $ks



#Web
$cmd 02800 allow tcp from $trustnet,$vpn to me http $ks


#FTP
$cmd 02900 allow tcp from $trustnet,$vpn to me $ftp $ks

#Mail
$cmd 03000 allow tcp from any to me $mailserv limit src-addr 20

#Webmin
$cmd 03100 allow tcp from $trustnet,$vpn to me 10000 $ks

#OpenVPN
$cmd 03200 allow udp from any to me 1802 limit src-addr 30




###NAT Section


#WEB, MAIL, ICQ
$cmd 03700 allow tcp from $trustnet to any 80,443,8443,25,110,143,993,995,465,587,5190,5222 via $lan
$cmd 03800 allow tcp from any 80,443,8443,25,110,143,993,995,465,587,5190,5222 to $trustnet via $lan


#FTP
$cmd 03900 allow tcp from $trustip,192.168.1.1 1024-65535 to any 20,21,1024-65535 via $lan
$cmd 04000 allow tcp from any 20,21,1024-65535 to $trustip,192.168.1.1 1024-65535 via $lan


#Webmin, SSH, RDP, Radmin
$cmd 04300 allow tcp from $trustnet to any 10000,22,3389,4899 via $lan
$cmd 04400 allow tcp from any 10000,22,3389,4899 to $trustnet via $lan

#Bank1
$cmd 04500 allow tcp from $trustnet to any 3264 via $lan
$cmd 04600 allow tcp from any 3264 to $trustnet via $lan


#Bank2
$cmd 04610 allow tcp from $trustnet to any 9443 via $lan
$cmd 04620 allow tcp from any 9443 to $trustnet via $lan




#Transparent proxy
$cmd 04900 fwd 127.0.0.1:3128 tcp from $trustnet to any 80 via $wan


#NAT
$cmdr nat 1 config if $wan deny_in reset same_ports
$cmd 05000 nat 1 ip from any to any via $wan


$cmd 40000 deny udp from any to any 137,138,139
$cmd 40100 deny tcp from any to any 137,138,139,445,1433

$cmd 50000 deny log ip from any to any
Бороться за знания, терзать препятствия, аки волк!

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-09 14:36:55

Если у вас прозрачный сквид работает, то может на нем фтп рулить?

Я так понимаю, что вы хотите зарезать порты по-максимуму? В случае с FTP этого добться трудно, ведь фтп создает 2 сесси:
1) командная (клиент:любой_порт <--->> сервер:21)
2.1) данные пассивный режим (клиент:любой_порт <--->> сервер:любой_порт)
2.2) данные активный режим (клиент:любой_порт <<---> сервер:20)

таким образом, предположив, что сервер использует стандартный 21й порт можно запретить коннекты к нему, но не выйдет ловить сессию данных так как для этого нужен анализ пакета (хелпер которого нет в ipfw). Таким образом проше запретить на фаерволе что-то конкретно и оставить остальнок в allow, чем пробовать разрешить только что-то одно, но остальное отключить. С фтп просто не выйдет.

---

если подгрузить alias_ftp.ko и дать allow all from any to any via $lan , то фтп заработает.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Dwolfix
рядовой
Сообщения: 28
Зарегистрирован: 2010-06-02 7:44:38
Откуда: Орск
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Dwolfix » 2010-06-10 5:32:04

Собственно это я и хотел узнать - что с фтп не так все просто, и стандартными возможностями ipfw этот вопрос не решить. А делать схему открытой душа не лежит :smile: Тем более, что все остальное работает как нужно. Спасибо за внимание и терпение!
Бороться за знания, терзать препятствия, аки волк!

daemon
рядовой
Сообщения: 34
Зарегистрирован: 2009-12-21 11:49:15

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение daemon » 2010-06-16 15:41:56

Может офф...
Хотелось бы услышать мнение опытных товарищей, чем нат ipfw лучше например связки ipfw+ipnat (собранный в ядро). Конф ipnat может прочесть ребенок, все предельно просто, то что конф отдельный - это тоже считаю плюсом. Скорее вопрос в нагрузках, тут и хотелось бы услышать мнение, может нагрузки не держит такие как встроенный в ipfw nat или еще что, но вот правила какие то не читаемые это факт. Однажды настроил фаер и забыл этот конф вообще, конф ipnat редактируется часто и мапинги и редиректы оч удобно.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-16 17:00:13

чем нат ipfw лучше например связки ipfw+ipnat (собранный в ядро).
не использовал ipf и ipnat, не знаю.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Merlin68
рядовой
Сообщения: 44
Зарегистрирован: 2010-06-09 8:51:45

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Merlin68 » 2010-06-21 14:53:46

Уважаемые коллеги !
Завёл себе второго провайдера, и, как всегда, очень остро встал вопрос с маршрутизацией.
Долго курил маны и серфил по и-нету, и в результате, чтобы не заморачиваться с дивертами, мне предложили использовать "ядерный нат". Система - 8.0-RELEASE FreeBSD. Настроил всё по http://www.lissyara.su/articles/freebsd ... /ipfw_nat/, по варианту 4. Спасибо автору, всё очень познавательно... Но...Всё ходит через дополнительный канал, через основной - не идёт. То ли я зациклился, чесно говоря, мозги немножко плавятся... Но всё по-порядку:
Имеем 3 интерфейса:
vr0 - канал основного провайдера (2 Мбит)
vr1 - канал дополнительного провайдера (10 Мбит)
rl0 - внутренняя сетка 192.168.100.0/24
Итак, в rc.conf имеем:

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

ifconfig_rl0="inet 192.168.100.8  netmask 255.255.255.0"                #Конфигурируем внутренний интерфейс
ifconfig_vr0="inet 194.143.145.26  netmask 255.255.255.248 -rxcsum"     #Конфигурируем внешний интерфейс 1 
ifconfig_vr1="inet 77.91.152.172  netmask 255.255.255.248 -rxcsum"      #Конфигурируем внешний интерфейс 2 

hostname="gate.domain.local"

defaultrouter="194.143.145.25"<>#Указываем шлюз по умолчанию (на основного провайдера)

setfib1_enable="YES"
setfib1_defaultroute="77.91.152.169" # Шлюз на дополнительного провайдера

gateway_enable="YES"<-->#Активируем режим пересылки пакетов между интерфейсами

firewall_enable="YES"<-><------>#Активируем Firewall
firewall_quiet="YES"<--><------>#Активируем "тихий" режим Firewall (при загрузке/перезагрузке
firewall_logging="YES"<><------>#Активируем режим журналирования
firewall_script="/etc/firewall" # для setfib

dummynet_enable="YES"

linux_enable="YES"

dnsmasq_enable="YES"

openvpn_enable="YES"

keymap="ua.koi8-u.shift.alt"

sshd_enable="YES"
apache22_enable="YES"
apache22_http_accept_enable="YES"
squid_enable="YES"
squid_fib=1   # squid адаптируем к setfib
mysql_enable="YES"
sams_enable="YES"
vsftpd_enable="YES"
openfire_enable="YES"
samba_enable="YES"

slapd_enable="YES"
## Этот параметр пишите в одну строку без переноса
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/ ldap://192.168.100.8/"'
########
slapd_sockets="/var/run/openldap/ldapi"

local_startup="/usr/local/etc/rc.d"
Далее адаптировал и видоизменил немножко пример 4, указав явно в таблице 0 машину с ИП 192.168.100.10 (она должна пойти по маршруту на основного провайдера, а в таблице 1 - машину с ИП 192.168.100.200 (она должна пойти по маршруту на дополнительного провайдера).
В /etc/firewall имеем:

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

#!/bin/sh
fcmd="/sbin/ipfw -q "

${fcmd} -f flush
${fcmd} -f pipe flush
${fcmd} -f queue flush

${fcmd} table 0 add 192.168.100.10
${fcmd} table 1 add 192.168.100.200

${fcmd} add 1040 setfib 0 ip from any to any in recv rl0
${fcmd} add 1050 setfib 1 ip from table(1) to any in recv rl0

${fcmd} add 1060 allow ip from any to any via rl0

${fcmd} add 1080 deny ip from any to 192.168.0.0/16 in recv vr0
${fcmd} add 1081 deny ip from any to 192.168.0.0/16 in recv vr1
${fcmd} add 1090 deny ip from 192.168.0.0/16 to any in recv vr0
${fcmd} add 1091 deny ip from 192.168.0.0/16 to any in recv vr1
${fcmd} add 10100 deny ip from any to 172.16.0.0/12 in recv vr0
${fcmd} add 10101 deny ip from any to 172.16.0.0/12 in recv vr1
${fcmd} add 10110 deny ip from 172.16.0.0/12 to any in recv vr0
${fcmd} add 10111 deny ip from 172.16.0.0/12 to any in recv vr1
${fcmd} add 10120 deny ip from any to 10.0.0.0/8 in recv vr0
${fcmd} add 10121 deny ip from any to 10.0.0.0/8 in recv vr1
${fcmd} add 10130 deny ip from 10.0.0.0/8 to any in recv vr0
${fcmd} add 10131 deny ip from 10.0.0.0/8 to any in recv vr1
${fcmd} add 10140 deny ip from any to 169.254.0.0/16 in recv vr0
${fcmd} add 10141 deny ip from any to 169.254.0.0/16 in recv vr1
${fcmd} add 10150 deny ip from 169.254.0.0/16 to any in recv vr0
${fcmd} add 10151 deny ip from 169.254.0.0/16 to any in recv vr1

${fcmd} pipe 1 config bw 10Mbit/s queue 60 gred 0.002/10/30/0.1
${fcmd} queue 1 config pipe 1 mask src-ip 0xffffffff queue 60 gred 0.002/10/30/0.1

${fcmd} pipe 2 config bw 10Mbit/s queue 60 gred 0.002/10/30/0.1
${fcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff queue 60 gred 0.002/10/30/0.1

${fcmd} pipe 3 config bw 2Mbit/s queue 60 gred 0.002/10/30/0.1
${fcmd} queue 3 config pipe 3 mask src-ip 0xffffffff queue 60 gred 0.002/10/30/0.1

${fcmd} pipe 4 config bw 2Mbit/s queue 60 gred 0.002/10/30/0.1
${fcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff queue 60 gred 0.002/10/30/0.1

${fcmd}  nat 1 config log if vr0 same_ports reset deny_in
${fcmd}  nat 2 config log if vr1 same_ports reset deny_in

${fcmd} add 10160 queue 1 ip from any to any out xmit vr0
${fcmd} add 10170 nat 1 ip from any to any via vr0
${fcmd} add 10180 queue 2 ip from any to any in recv vr0

${fcmd} add 10190 queue 3 ip from any to any out xmit vr1
${fcmd} add 10200 nat 2 ip from any to any via vr1
${fcmd} add 10210 queue 4 ip from any to any in recv vr1

${fcmd} add 10220 allow all from any to any

${fcmd} add 65534 deny all from any to any
/usr/local/etc/rc.d/setfib1 сделал именно так, как прописано в статье

Что имеем в итоге:
Поскольку используется SQUID, то через проксю всё ходит, но ходит исключительно через дополнительного провайдера.
На роутере имеем:

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

# sysctl -a | grep one_pass
net.inet.ip.fw.one_pass: 1
#

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

# ipfw table 0 list
192.168.100.10/32 0
#
# ipfw table 1 list
192.168.100.200/32 0

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

# setfib -0 netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            194.143.145.25     UGS         0      244    vr0
10.1.0.0/24        10.1.0.2           UGS         0        0   tun0
10.1.0.1           link#5             UHS         0        0    lo0
10.1.0.2           link#5             UH          0        0   tun0
77.91.152.168/29   link#3             U           0       63    vr1
77.91.152.172      link#3             UHS         0        0    lo0
127.0.0.1          link#4             UH          0    17703    lo0
192.168.100.0/24   link#1             U           2     2066    rl0
192.168.100.8      link#1             UHS         0        0    lo0
194.143.145.24/29  link#2             U           0       57    vr0
194.143.145.26     link#2             UHS         0        0    lo0

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UH          lo0
fe80::%lo0/64                     link#4                        U           lo0
fe80::1%lo0                       link#4                        UHS         lo0
ff01:4::/32                       fe80::1%lo0                   U           lo0
ff02::%lo0/32                     fe80::1%lo0                   U           lo0
#

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

# setfib -1 netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            77.91.152.169      UGS        48    84764    vr1
10.1.0.2           link#5             UH          0        0   tun0
77.91.152.168/29   link#3             U           0        0    vr1
127.0.0.1          link#4             UH          0        0    lo0
192.168.100.0/24   link#1             U           4    88319    rl0
194.143.145.24/29  link#2             U           0        0    vr0

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UH          lo0
fe80::%lo0/64                     link#4                        U           lo0
fe80::1%lo0                       link#4                        UHS         lo0
ff01:4::/32                       fe80::1%lo0                   U           lo0
ff02::%lo0/32                     fe80::1%lo0                   U           lo0
#
И что мне непонятно:

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

# ipfw show
01040  51873   3842446 setfib 0 ip from any to any in recv rl0
65535 380217 337924537 allow ip from any to any
#
Друзья! Помогите настроить правильно, зациклился я уже....
Направьте на путь истинный....

Merlin68
рядовой
Сообщения: 44
Зарегистрирован: 2010-06-09 8:51:45

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Merlin68 » 2010-06-21 15:44:10

Кстати, ставлю

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

sysctl net.inet.ip.fw.one_pass=0
и с локалки в и-нет выйти нельзя.
Ставлю

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

sysctl net.inet.ip.fw.one_pass=1
через прокси можно выйти (но на дополнительного провайдера.
Выручайте, друзья, всю голову сломал !

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-21 16:02:52

Поскольку используется SQUID, то через проксю всё ходит, но ходит исключительно через дополнительного провайдера.
Ну тут ничего не поделать, ведь в rc.conf для сквида прописано через fib использовать второго провайдера - вот он и шлет все через него. А то, что в ipfw для трафика выставляется fib 0

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

# ipfw show
01040  51873   3842446 setfib 0 ip from any to any in recv rl0
65535 380217 337924537 allow ip from any to any
#
ничего не значит так как атрибут fib у пакета есть до тех пор пока он в ядре, а как только пакет переходит какой-либо user-space программе (в данном слече сквид), то все fib из него удаляются.

---

К сожалению, задуманая вами схема не сработает. Дело в том, что, во первых fib можно назначать пакету только на проходе IN. Во вторых так как пакеты уходят в сквид то и fib теги с них удаляются...

Попробуйте реализовать вашу схему на fwd правилах.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Merlin68
рядовой
Сообщения: 44
Зарегистрирован: 2010-06-09 8:51:45

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Merlin68 » 2010-06-21 16:31:42

Спасибо.
Значит ли это, что всё придётся делать на двух экземплярах natd и дивертах ?

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-21 16:36:21

не знаю. скорее уж на двух сквидах...

как можно добиться того чтобы трафик после сквида (когда адрес отрпавителя уже заменен) раскидывать по разным линкам? как идентифицировать отправителя?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Merlin68
рядовой
Сообщения: 44
Зарегистрирован: 2010-06-09 8:51:45

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Merlin68 » 2010-06-21 16:49:37

Афикеть !!!
А кто-нибудь делал такое ?
Мож, почитать где-то можно об этом?
В смысле, 2 провайдера и сквид ?

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-21 16:57:05

запустите второго сквида в джайле и с помощью ipfw fwd пересылайте трафик на него, когда надо какого-то юзера выводить через другого провайдера. какие еще могут быть варианты? средствами сквида селективную пересылку между несколькими провайдерами для разных ACL не сделать...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

krokozjabr
ефрейтор
Сообщения: 57
Зарегистрирован: 2010-05-01 21:27:02

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение krokozjabr » 2010-06-30 16:45:39

извините
что лезу без очериди я прочёл стр1-3
у меня не работает :st: нат с нового года
конфиг самый простой

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

00100 196 13120 nat 123 ip from 192.168.137.0/24 to any
00200  37  1968 nat 123 ip from any to 192.168.10.68
65535 278 18015 allow ip from any to any
[root@serv ~]#
ипри этом пропадает интернет на сервере и по ssh не достучаться
и что этo за пораметр config
пример
#add nat 123 config ip 192.168.10.68 log
--------------------------------------------------------------
надо росскаментить эту строку все золеттало так что такое config

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-06-30 17:42:56

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

ipfw nat 123 config ip 192.168.10.68
так настраевается экземпляр ната (у него куча настроек, одна из которых ip который он должен использовать в работе).

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

ipfw add nat 123 ip from any to any via fxp0
так настраевается заварачивание трафика идущего через сетевуху fxp0 на нат.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

crx
рядовой
Сообщения: 10
Зарегистрирован: 2010-06-02 13:29:50

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение crx » 2010-07-01 10:42:03

Доброго времени суток.
Может не совсем в ту тему, но простите великодушно :smile: , потому как уже сломал голову.
Итак, что есть:
комп, freebsd 8.0, работает как шлюз для небольшой офисной сети.
stge0 - провайдер, статический айпи
stge1 - внутрисеть.

Построил nat по статье многоуважаемого terminus'a (пример 1).

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

ipfw nat 1 config log if stge0 same_ports reset deny_in
вывод ipfw show:

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

00100       0         0 allow ip from any to any via lo0
00200       0         0 deny ip from any to 127.0.0.0/8
00300       0         0 deny ip from 127.0.0.0/8 to any
01000  812633 525945834 allow ip from any to any via stge1
02050       4       176 deny ip from any to 192.168.0.0/16 in recv stge0
02060      25      7397 deny ip from 192.168.0.0/16 to any in recv stge0
02070       0         0 deny ip from any to 172.16.0.0/12 in recv stge0
02080      13       507 deny ip from 172.16.0.0/12 to any in recv stge0
02090       0         0 deny ip from any to 169.254.0.0/16 in recv stge0
02100       0         0 deny ip from 169.254.0.0/16 to any in recv stge0
03000    6827    471711 allow ip from any to me dst-port 22
03010       0         0 allow ip from me to any dst-port 22
03030       0         0 allow ip from any to any dst-port 389
03050     250     15808 allow tcp from any to me in via stge0 dst-port 1723
10130 1669489 846942826 nat 1 ip from any to any via stge0
20000  222705  93311053 allow ip from any to any
65535    2225    139066 deny ip from any to any
трафик на внешний мир нормально бегает, почту они получают себе, по одноклассникам шарятся. :smile:

поверх всего этого счастья поднят mpd5
конфиг mpd5:

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

startup:
        # configure mpd users
        set user admin xxxxxxxxxx admin
        # configure the console
        set console self 127.0.0.1 5005
        set console open
        # configure the web server
        set web self 127.0.0.1 5006
        set web open

default:
        load pptp_server
        igat
igat:
        nev -i ng0 igat igat
        set ipcp ranges 10.0.0.1/32 10.0.0.210
        load pptp_server

pptp_server:
        set ippool add poolsat 10.0.0.210 10.0.0.220
        create bundle template B
        set iface enable proxy-arp
        set iface idle 0
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        #set ipcp ranges 10.0.0.0/24 ippool poolsat
        set ipcp dns 10.0.0.1

# Enable Microsoft Point-to-Point encryption (MPPE)
        set bundle enable compression
        set ccp yes mppc
        create link template L pptp
        set link enable multilink
        set link yes acfcomp protocomp

        set link action bundle B
        set link no pap chap
        set link enable chap
        set link enable chap-msv1
        set link enable chap-msv2
        set link mtu 1460
        set link keep-alive 10 75

# Configure PPTP and open link
        set pptp self xx.xx.xx.xx
        set link enable incoming
Теперь собственно в чем трабла:
При подключении через vpn пингуется шлюз, работает доступ к инету, и тд. Но! из всей внутрисети пингуется аж 2 принтера hp laserjet p2015n. Почему, ума не приложу. Адреса принтеров 10.0.0.26 и 10.0.0.27. Компы которые не пингуются 10.0.0.5, 10.0.0.200, 10.0.0.35 и тд.

crx
рядовой
Сообщения: 10
Зарегистрирован: 2010-06-02 13:29:50

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение crx » 2010-07-01 10:56:42

Посидел, подумал, решил дописать :smile:

после подключения проблемы только у того кто подключился (ноут на windows 7, все файрволлы отключены.). По внутренней сетке всё продолжает отлично бегать.
Создается странное впечатление, что система просто не знает как правильно маршрутизировать трафик между ифасом смотрящим в локальную сетку, и виртуальным ифасом. Но почему тогда принтеры пингуються как родные?

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-07-01 11:15:36

попробуйте запустить хелпер ната для pptp

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

kldload alias_pptp.ko
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

crx
рядовой
Сообщения: 10
Зарегистрирован: 2010-06-02 13:29:50

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение crx » 2010-07-01 11:19:16

Запущен. Это первое что я вычитал в Вашей статье.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-07-01 11:32:57

попробуйте добавить:

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

ipfw add 350 reass ip from any to any
и поменять:

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

sysctl net.inet.ip.fw.one_pass=0
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

crx
рядовой
Сообщения: 10
Зарегистрирован: 2010-06-02 13:29:50

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение crx » 2010-07-01 11:47:43

К сожалению не помогло.

Вот только сейчас заметил что шлюз не пингует ноут подключенный через vpn. При этом ноут отлично пингует шлюз.
Добавил пару правил в тестовых целях:

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

01060      40       2400 allow ip from 10.0.0.210 to 10.0.0.200 via ng0
01070       0          0 allow ip from 10.0.0.210 to 10.0.0.200
01080       0          0 allow ip from any to 10.0.0.210 via stge0

по счетчикам видно что трафик в сеть уходит, а вот назад он не возвращается. А что бы такое написать чтобы он возвращался?)

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение terminus » 2010-07-01 11:56:06

Я не силен в MPD...

покажите tracert с VPN клиента на принтер который пингуется и на что-то что не пингуется.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.