Автор Гілка: IPFW в студію  (Прочитано 6658 раз)

Відсутній maluy

  • Новачок
  • *
  • дописів: 16
  • Карма: +0/-0
  • I Love YaBB 2!
IPFW в студію
« : 2006-01-27 18:03:25 »
Перегляньте, будьте ласкаві, набір правил, ато в мене тут на голову всього зразу так багацько звалилось, що не встигаю все це опрацьовувати! :(

Словом IPFW повинен все блокувати по замовчуванню і пускати тільки певні пакети та відкривати певні порти, для окремих людей має бути трохи більше привілегій!

Він ніби працює, але то що криво то 100% Наприклад трафік на натд не закручує :(

Коли пускаю ping www.ya.ru з самого роутера то ось що видає:
ping: cannot resolve www.ya.ru: Host name lookup failure

nslookup www.ya.ru
*** Can't find server name for address 127.0.0.1: No response from server
*** Can't find server name for address X.X.X.X: No response from server
*** Can't find server name for address Y.Y.Y.Y: No response from server
*** Default servers are not available

Тільки но дозволю все, зразу все працює.

DNS повинен бути теж зарубаний для простих смертних

[Xx[Xx][Xx][Xx][Xx])
        ############
        # This is a prototype setup for a simple firewall.  Configure this
        # machine as a named server and ntp server, and point all the machines
        # on the inside at this machine for those services.
        ############

        # set these to your outside interface network and netmask and ip
        oif="rl0"
        oip="a.a.a.a" #

        # set these to your inside interface network and netmask and ip
        iif="fxp0"
        inet="192.168.1.0"
        inetmask="24"
        imask="255.255.0.0"
        iip="192.168.1.3"

        noute="192.168.1.124"
        admin="192.168.1.132"
        shef="192.168.1.118"
        test="192.168.1.123"

        setup_loopback

        ${fwcmd} -f flush

        ${fwcmd} add allow ip from any to any lo0

        ${fwcmd} add deny ip from 192.168.0.0/16 to any in via ${oif}
        ${fwcmd} add deny ip from 172.16.0.0/12 to any in via ${oif}
        ${fwcmd} add deny ip from 10.0.0.0/8 to any in via ${oif}

        ${fwcmd} add allow icmp from any to any icmptypes 0,8

        ${fwcmd} add divert natd all from ${inet}:${imask} to any out via ${oif}
        ${fwcmd} add divert natd all from any to ${oip} in via ${oif}


       #${fwcmd} add divert natd all from 192.168.1.0/24 to any out recv ${iif} xmit ${oif}
        #${fwcmd} add divert natd all from not 192.168.1.0/24 to ${oip} recv ${oif}



        ${fwcmd} add pass tcp from any to any established
        #${fwcmd} add pass ip from 213.130.28.253 to any out xmit rl0
        ${fwcmd} add pass ip from ${oip} to any out xmit ${oif}
####################################################################################
        ${fwcmd} add pass tcp from ${admin} to any 20,21,22,23,80,443,4000
        ${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${admin}

        ${fwcmd} add pass tcp from ${shef} to any 20,21,22,23,80,443,4000
        ${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${shef}

        ${fwcmd} add pass tcp from ${test} to any 20,21,22,23,80,443,4000
        ${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${test}

        ${fwcmd} add pass tcp from ${noute} to any 20,21,22,23,80,443,4000
        ${fwcmd} add pass tcp from any 20,21,22,23,80,443,4000 to ${noute}
####################################################################################
        ${fwcmd} add drop tcp from any to any 20,21,22,23,3128 in via ${oif}
        ${fwcmd} add drop tcp from any to any 20,21,22,23,3128 in via ${iif}
        ${fwcmd} add drop tcp from any to any 8000-8079
        ${fwcmd} add drop tcp from any to any 8081-8104

        ${fwcmd} add pass tcp from any to any 80,5190

        ${fwcmd} add pass tcp from any to any 443 out
        ${fwcmd} add pass tcp from any 443 to any out
        ${fwcmd} add pass all from any to any via ${iif}

        ${fwcmd} add drop tcp from any to any 25,110 via ${oif}
        ${fwcmd} add drop tcp from any 25,110 to any via ${oif}
        ${fwcmd} add drop udp from any to any 53 via ${iif}
        ${fwcmd} add drop udp from any 53 to any via ${iif}
        ${fwcmd} add pass udp from any to any 53 via ${oif}

        ${fwcmd} add allow icmp from any to ${oip} in via ${oif} icmptype 0,3,4,11,12
        ${fwcmd} add allow icmp from any to ${inet}/{inetmask} in via ${oif} icmptype

0,3,4,11,12
      ${fwcmd} add allow icmp from ${oip} to any out via ${oif} icmptype 3,8,12
        ${fwcmd} add allow icmp from ${oip} to any out via ${oif} frag

        ${fwcmd} add deny log all from any to any via ${oif}
        ${fwcmd} add deny log ip from any to any

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #1 : 2006-01-27 23:28:51 »
Ух, ну ви тут і понарозповідали...
Тобто, у вас є багатокористувацька FreeBSD, в котрій файрвол має бути закритим для всіх окрім того, що ви дозволите (судячи з вашого повідомлення) чи все-таки локальна мережа, у певних комп'ютерів якої має бути більше доступу, аніж у решти (судячи з початку файрволу)?
Далі. У вас прості смертні лише поштою користуються? Тоді й дозвольте їм лише пошту, бо без DNS WWW, FTP etc їм не особливо потрібні.
Далі. При генерації правил файрвола їх рекомендується номерувати, та ще й таким чином, щоб між будь-якими двома правилами було вільне місце. Доволі поширена практика давати номери кратні 10. Таким чином ви отримуєте змогу пізніше додати щось всередину файрвола при нагоді.
Далі. Правила на кшталт ось цих
        ${fwcmd} add deny ip from 192.168.0.0/16 to any in via ${oif}
        ${fwcmd} add deny ip from 172.16.0.0/12 to any in via ${oif}
        ${fwcmd} add deny ip from 10.0.0.0/8 to any in via ${oif}
я б ставив в самий кінець. А то й взагалі б викинув геть. На початку написав би все, що кому можна, а далі одним правилом - deny all from any to any.
Далі.
Запустіть ipfw show і подивіться на лічильники пакетів/байтів (другий та третій стовпчики) - якщо по правилу нічого не проходить, то, відповідно, лічильники містять нулі. А далі сядьте і подумайте - чому. Врахуйте, що як тільки пакет знаходить правило у файрволі, під яке він підпадає, подальший пошук припиняється (з цього правила є винятки, але зараз вони для нас не суттєві). Так що якщо у вас спершу який-небудь deny all from 192.168.0.0/16 to any, а далі allow tcp from 192.168.1.1 to any 80, то навіть якщо ви будете з бубном танцювати навколо сервера, а на 192.168.1.1 www не піде.
Ну й останнє. У системному адмініструванні робити "якнайшвише, будь-як аби лише працювало" - собі дорожче. не варто поспішати зробити абияк за два дні, а потім три місяці переробляти. Краще зробити не поспішаючи за місяць.
Читайте документацію - вона кермує.

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #2 : 2006-01-27 23:36:17 »
А. Мало не забув.
Якщо ви все-таки хочете побачити якусь конкретну пораду - дайте більше інформації про те, що вам потрібно та на якій системі ви це все робите. Вітається також приблизна топологія мережі та згадки про кероване обладнання, якщо таке є.
І напишу-таки те, що весь чась крутиться на пальцях - ТЕЛЕПАТИ У ВІДПУСТЦІ!  ;)
Читайте документацію - вона кермує.

Відсутній maluy

  • Новачок
  • *
  • дописів: 16
  • Карма: +0/-0
  • I Love YaBB 2!
Re: IPFW в студію
« Відповідей #3 : 2006-02-02 11:30:30 »
Я зрозумів не коректність постановки своєїї задачі.  :-[

Отож.
Є невеличка мережа, 100 компів. На перших порах користувались інтернетом тільки від одного провайдера, тепер керівництво прийшло до висновку, що потрібно ще одну ADSL поставити від іншого провайдера. (роутер А роздає нет від першого провайдер, роутер В роздає нет від нового провайдер)

Задача.
Зробити так щоб 100 компів юзали http, https, aol, ftp через В, а пошта працювала  через А.

Сервіси які налаштованні на А:
DNS, IPFW, NATD, QMAIL
Сервіси які є на В:
IPFW, NATD

Трошки розібравшиз з фаєрволом я зробив наступний набір правил:
#!/bin/sh

echo -n "#### Startuje <<<FAIREWALL>>> ###"
echo
ipfw="/sbin/ipfw"
uports="1025-65535"

int_if="fxp0"
ext_if="rl0"

int_ip="192.168.255.254"
ext_ip="x.x.x.x"

int_net="192.168.1.3/16"
ext_net="y.y.y.y/20"

admin="192.168.1.132"
shef="192.168.1.118"
test="192.168.1.123"
noute="192.168.1.124"

for_lan="domain,http,https,aol"
for_vip="ftp,ssh,smtp,pop3"
for_rout="ftp,domain,ssh"

Services="smtp,pop3,http,https,domain,aol,ssh,ftp"

# Standart for loopback
${ipfw} add allow all from any to any via lo0
${ipfw} add deny all from any to 127.0.0.0/8

#Zaxust vid pidminu adresiv zovni
${ipfw} add deny all from 127.0.0.0/8 to any in recv $ext_if
${ipfw} add deny all from 10.0.0.0/8 to any in recv $ext_if
${ipfw} add deny all from 172.16.0.0/16 to any in recv $ext_if
${ipfw} add deny all from 192.168.0.0/24 to any in recv $ext_if

#Dozvil vsjogo dlja vnytrishnjogo trafiky
${ipfw} add allow all from $int_net to any in recv $int_if
${ipfw} add allow all from any to $int_net out xmit $int_if

#Divert na NATD
${ipfw} add divert natd all from $int_net to not $int_net out xmit $ext_if
${ipfw} add divert natd all from any to $ext_ip in recv $ext_if

#Dozvil na vuxodjachuj trafik z FREEBSD na potribni servisu
${ipfw} add allow tcp from $ext_ip $uports to any $Services out xmit $ext_if

#Dozvil vxidnogo trafiky v nashy local
${ipfw} add allow tcp from any $for_lan to $int_net $uports in recv $ext_if established

###############################################################################
#Dozvil dlia VIP klijentiv
${ipfw} add allow tcp from any $for_vip to $shef $uports in recv $ext_if established
${ipfw} add allow tcp from any $for_vip to $admin $uports in recv $ext_if established
${ipfw} add allow tcp from any $for_vip to $test $uports in recv $ext_if established
${ipfw} add allow tcp from any $for_vip to $noute $uports in recv $ext_if established
###############################################################################

#Ny i dlaj Friaxu!!!
${ipfw} add allow tcp from any $for_rout to $ext_ip $uports in recv $ext_if established

#Dns i loockup
${ipfw} add allow udp from $ext_ip $uports to any domain out xmit $ext_if
${ipfw} add allow udp from any domain to $ext_ip $uports in recv $ext_if
${ipfw} add allow udp from any domain to $int_net $uports in recv $ext_if

#Ping
${ipfw} add allow icmp from any to me icmptypes 0,3,4,11,12 in
${ipfw} add allow icmp from any to $int_net icmptypes 0,3,4,11,12 in recv $ext_if
${ipfw} add allow icmp from me to any icmptypes 3,8,12 out

#FTP
${ipfw} add allow tcp from $ext_ip $uports to any $uports out xmit $ext_if
${ipfw} add allow tcp from any $uports to $ext_ip $uports in recv $ext_if established
${ipfw} add allow tcp from any $uports to $admin $uports in recv $ext_if established
${ipfw} add allow tcp from any $uports to $shef $uports in recv $ext_if establi
shed
${ipfw} add allow tcp from any $uports to $noute $uports in recv $ext_if establi
shed


#Zanosum v log infy
${ipfw} add deny log logamount 100 tcp from any to $ext_ip in recv $ext_if setup

#Vse reshta zakruvajem
${ipfw} add deny log logamount 700 tcp from any to $ext_ip in recv $ext_if setup

Словом ніби стало краще, але тепр я небачу щоб трафік на нат ішов!
Фай natd.conf пустий, можливо там щось потрібно прописати :-/???

Ще зразу покажу кусок файлу, що відноситься до того, rc.conf:

hostname="xxxxxxxxxxxxx"
ifconfig_fxp0="inet 192.168.1.3/16 netmask 255.255.0.0"

defaultrouter="x.x.x.x"

gateway_enable="YES"

###############################################################################
#Pidkljychennja pppoe                                                         #
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="pppoe"
###############################################################################

firewall_enable="YES"
firewall_script="/etc/rc.ipfw"
firewall_logging="YES"

natd_enable="YES"
natd_program="/sbin/natd"
natd_flags="-f /etc/natd.conf"
Отакі то справи. Чим зарадите і підскажити??? Приймаю всю критику :) Бо розумію, що тут ніби вже й немає нічого такого складго, але мені щось не йде воно.

І ще забув. З*єднання налаштовано і працює через PPoE.
« Змінено: 2006-02-02 11:58:55 від maluy »

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #4 : 2006-02-02 14:58:52 »
Є невеличка мережа, 100 компів. На перших порах користувались інтернетом тільки від одного провайдера, тепер керівництво прийшло до висновку, що потрібно ще одну ADSL поставити від іншого провайдера. (роутер А роздає нет від першого провайдер, роутер В роздає нет від нового провайдер)

Задача.
Зробити так щоб 100 компів юзали http, https, aol, ftp через В, а пошта працювала  через А.
Хм. А на біса вам два роутери? У нас схожа ситуація, лише провайдерів 3 - роутер один. Так значно зручніше, НМД.
Сервіси які налаштованні на А:
DNS, IPFW, NATD, QMAIL
Сервіси які є на В:
IPFW, NATD
Ось власне - два nat'и, два файрволи...
***
Словом ніби стало краще, але тепр я небачу щоб трафік на нат ішов!
Фай natd.conf пустий, можливо там щось потрібно прописати :-/???
***
Отакі то справи. Чим зарадите і підскажити??? Приймаю всю критику :) Бо розумію, що тут ніби вже й немає нічого такого складго, але мені щось не йде воно.

І ще забув. З*єднання налаштовано і працює через PPoE.

Хм. А на дідька піднімати nat при живому ppp_nat="YES"? Звісно, що ніякий трафік на nat на йде. Його ж вже ppp від-nat-ив.
Далі. natd краще піднімати таким чином:
Цитата
natd_enable="YES"
natd_interface="rl0"
natd_flags="-u -l"
Далі. Я вже раз писав про файрвол, ще раз коротко повторюсь. Його краще запускати ось так:
Цитата
firewall_enable="YES"
firewall_type="/etc/fw.conf"
а далі файл /etc/fw.conf виглядатиме приблизно таким чином:
Цитата
add 10 count ip from any to any in recv rl0
add 12 count ip from any to any out xmit rl0
add 20 count ip from any to any in recv tun1
add 22 count ip from any to any out xmit tun1
***
add 46 allow ip from any to any via dvb0
add 48 allow ip from any to any via tun0
add 50 allow ip from any to any via tun1
***
Це все шматки з моїх конфігів. Судячи з того, що я зараз щось пишу в інтернеті, конфіги працюючі ;о).
« Змінено: 2006-02-02 15:00:56 від miwa »
Читайте документацію - вона кермує.

Відсутній maluy

  • Новачок
  • *
  • дописів: 16
  • Карма: +0/-0
  • I Love YaBB 2!
Re: IPFW в студію
« Відповідей #5 : 2006-02-06 18:28:50 »
Да це все класно, але тепер наступна проблема. Як натом перенаправити одну конкретну айпіху на комп в моїй мережі по протоколу rdp???

Що вже тільки не хімічу. У файлі ната пишу
rdr rl0 моя зовнішня айпі port 3389 -> айпі компа на який перенаправляю port 3389 tcp
rdr fxp0 айпі компа в моїй мережі port 3389 -> зовнішня айпі port 3389 tcp

Шлях до ната вказую у файлі rc.conf:
natd_flags="-u -l /etc/natd.conf"

Що порадите точніше підскажите???

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #6 : 2006-02-07 11:21:15 »
Оскільки перенаправленням, в тому числі і "айпіх" займається ipfw, то пораджу звернутись до нього і покинути спроби зробити це nat'ом. А підкажу детальніше почитати про ipfw fwd (у мані є :о) )
Ось типовий приклад прозорого проксі на FreeBSD; думаю, по аналогії зробите щось своє:

ipfw add fwd 127.0.0.1:3128 tcp from any to any 80,3128,8080,8888
Читайте документацію - вона кермує.

Відсутній Single

  • Новачок
  • *
  • дописів: 41
  • Карма: +0/-0
  • Убунтієць - нубієць
IPFW2
« Відповідей #7 : 2006-03-28 09:47:47 »
А якщо таке: є шлюз, на якому є 3 мережевих інтерфейси: один внутрішній (локальний rl0) и два зовнішніх (rl1, rl2). З'єднання з ISP осуществляется по протоколу РРРоЕ. На даному шлюзі підняті 2 NAT на зовнішніх інтерфейсах.

Дпоможіть написати правила для IPFW2(FreeBSD 6.0), щоб пакунки по портам 80, 8080, 53, 21, 20, 110, 25 автоматично йшли на інтерфейс rl1, всі інші уходили через интерфейс rl2.
А де подівся мій root? Га?!

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #8 : 2006-03-28 11:26:15 »
Хм. В такому випадку можна ставити defoultrouter на rl2 і окремо перенаправляв на rl1 вказані порти. Точно так само, як у прикладі прозорого проксі у попередньому повідомленні, лише замість 127.0.0.1 треба буде виставити ІР-адресу, до якої приєднується rl1. Ну й порт для неї не вказувати:

ifpw add <No> fwd <сусід rl1> tcp from <localnet> to any <port>

Але особисто я би для вирішив для себе, що саме має ходити через rl2 (ну не кажіть мені що "все", не повірю - кілька забавок, icq, torrent, але не "все": нормальний адмін "все" закриває а не випускає назовні :о) ) і форвардив саме цей трафік. Не подобається мені ідея ходіння основних служб не по defoultrouter.
Читайте документацію - вона кермує.

Відсутній major

  • Новачок
  • *
  • дописів: 15
  • Карма: +0/-0
  • I Love FreeBSD!
Re: IPFW в студію
« Відповідей #9 : 2006-04-03 18:11:08 »
До miwa

Цитата
Оскільки перенаправленням, в тому числі і "айпіх" займається ipfw, то пораджу звернутись до нього і покинути спроби зробити це nat'ом. А підкажу детальніше почитати про ipfw fwd (у мані є :о) )
Ось типовий приклад прозорого проксі на FreeBSD; думаю, по аналогії зробите щось своє:
 
ipfw add fwd 127.0.0.1:3128 tcp from any to any 80,3128,8080,8888

Отут Ви дуже неправі!
Це потрібно робити тільки natd'ом.
Фрагмент моєї робочої конфігурації

.....
same_ports yes
use_sockets yes
redirect_port tcp 192.168.1.2:20-110 20-110
........

Natd всі звернення з інтернету на мою зовнішню ip адресу tcp порти з 20 по 110 буде переправляти на внутрішній сервер, а в пакетах що відсилатиме цей сервер у відповідь автоматично змінить ip-адресу джерела на зовнішню. Все працює прозоро для  всіх клієнтів з інтернету!

Натомість, якщо зробити так як кажете Ви нічого працювати не буде! Коли ipfw перенаправляє пакети він не змінює адресу призначення. Комп'ютери з Windows просто проігнорують пакет що прийшов не на їх рідну ip адресу.
Цитата з man ipfw
Цитата
    fwd | forward ipaddr[,port]
             Change the next-hop on matching packets to ipaddr, which can be
             an IP address or a host name.  The search terminates if this rule
             matches.

             If ipaddr is a local address, then matching packets will be for-
             warded to port (or the port number in the packet if one is not
             specified in the rule) on the local machine.
             If ipaddr is not a local address, then the port number (if speci-
             fied) is ignored, and the packet will be forwarded to the remote
             address, using the route as found in the local routing table for
             that IP.
             A fwd rule will not match layer-2 packets (those received on
             ether_input, ether_output, or bridged).
             The fwd action does not change the contents of the packet at all.
             In particular, the destination address remains unmodified, so
             packets forwarded to another system will usually be rejected by
             that system unless there is a matching rule on that system to
             capture them.  For packets forwarded locally, the local address
             of the socket will be set to the original destination address of
             the packet.  This makes the netstat(1) entry look rather weird
             but is intended for use with transparent proxy servers.
Такі "нетуди напрямлені пакети" може сприймати тільки спеціально розроблена програма, наприклад squid.
Так що мани потрібно читати Вам  ;)

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #10 : 2006-04-04 10:03:41 »
До miwa

Цитата
Оскільки перенаправленням, в тому числі і "айпіх" займається ipfw, то пораджу звернутись до нього і покинути спроби зробити це nat'ом. А підкажу детальніше почитати про ipfw fwd (у мані є :о) )
Ось типовий приклад прозорого проксі на FreeBSD; думаю, по аналогії зробите щось своє:
 
ipfw add fwd 127.0.0.1:3128 tcp from any to any 80,3128,8080,8888

Отут Ви дуже неправі!
Це потрібно робити тільки natd'ом.
Прозорий проксі? Тільки-тільки натом? І більше нічим-нічим? Та ви що? І що буде, якщо перенаправлення робитимуться не natd'ом?

Фрагмент моєї робочої конфігурації

.....
same_ports yes
use_sockets yes
redirect_port tcp 192.168.1.2:20-110 20-110
........

Natd всі звернення з інтернету на мою зовнішню ip адресу tcp порти з 20 по 110 буде переправляти на внутрішній сервер, а в пакетах що відсилатиме цей сервер у відповідь автоматично змінить ip-адресу джерела на зовнішню. Все працює прозоро для  всіх клієнтів з інтернету!
Ну ви ще мені порозповідайте про роботу natd.

Натомість, якщо зробити так як кажете Ви нічого працювати не буде!
Може закладемось? Що вам не шкода програти?
Коли ipfw перенаправляє пакети він не змінює адресу призначення. Комп'ютери з Windows просто проігнорують пакет що прийшов не на їх рідну ip адресу.
Та ви що? Жах якийсь. А в інтернет я вже років десять по батареях ходжу: інакше ж неможливо в принципі.
Ви зауважили взагалі-то, що перенаправлятимуться пакети, котрі йдуть ВІД клієнтів локальної мережі НАЗОВНІ? І маршрутизатору просто потрібно вирішити, котрі пакети котрим каналом відправляти. А компютери з Windows отримають назад свої пакети, перетворені nat'ом, з рідними ІР.
Такі "нетуди напрямлені пакети" може сприймати тільки спеціально розроблена програма, наприклад squid.
Так що мани потрібно читати Вам  ;)
Мани потрібно читати всім. А іноді не лише мани, але й те, що пише співрозмовник/опонент. Тому що окрім усього іншого мова у моєму прикладі йшла про прозорий проксі. Підкажу вам: squid - то також проксі. Тільки я вас дуже прошу - не треба мені починати розповідати ще й про його принципи роботи, вставляючи при цьому кавалки манів.
Читайте документацію - вона кермує.

Відсутній major

  • Новачок
  • *
  • дописів: 15
  • Карма: +0/-0
  • I Love FreeBSD!
Re: IPFW в студію
« Відповідей #11 : 2006-04-04 16:00:31 »
До miwa

Да це все класно, але тепер наступна проблема. Як натом перенаправити одну конкретну айпіху на комп в моїй мережі по протоколу rdp???

Що вже тільки не хімічу. У файлі ната пишу
rdr rl0 моя зовнішня айпі port 3389 -> айпі компа на який перенаправляю port 3389 tcp
rdr fxp0 айпі компа в моїй мережі port 3389 -> зовнішня айпі port 3389 tcp

Шлях до ната вказую у файлі rc.conf:
natd_flags="-u -l /etc/natd.conf"

Що порадите точніше підскажите???

По моєму, попередню проблему було вирішено і далі maluy запитав як керувати комп'ютером в приватній мережі по протоколу Remote Desktop Protocol (RDP). При тому він правильно зрозумів що це потрібно робити natd'ом. Ви дезінформували його, порадивши вирішувати цю проблему методами ipfw.

Цитата
Прозорий проксі? Тільки-тільки натом? І більше нічим-нічим? Та ви що? І що буде, якщо перенаправлення робитимуться не natd'ом?


Ви ще й зачепили тему прозорого проксі - яка до rdp протоколу має досить віддале відношення...
Мова не йде про прозорий проксі, запитання було як перенаправити пакети з допомогою natd.
На рахунок "тільки-тільки" - здається, але я не впевнений, що протокол rdp можна перекинути з допомогою HTTPS чи SOCKS проксі.


Цитата
Та ви що? Жах якийсь. А в інтернет я вже років десять по батареях ходжу: інакше ж неможливо в принципі.
Ви зауважили взагалі-то, що перенаправлятимуться пакети, котрі йдуть ВІД клієнтів локальної мережі НАЗОВНІ? І маршрутизатору просто потрібно вирішити, котрі пакети котрим каналом відправляти. А компютери з Windows отримають назад свої пакети, перетворені nat'ом, з рідними ІР.

Так, ipfw forward використовується в такій конфігурації для того щоб відіслати пакети  не на default gateway. Взагалі ipfw forward  використовується тільки для вибору gateway і перекиду пакетів на squid.
Інші йому застосування важко придумати, бо ipfw не модифікує пакет.
 
Дана конфігурація буде працювати лише тоді, коли комп'ютер яким Ви хочете керувати відіслав хоч 1 пакет з порту 3389 назовні. Інакше natd без стрічки
 redirect_port tcp 192.168.0.ххх:3389 3389в своїй конфігурації, просто не буде знати на який з локальних комп'ютерів відсилати вхідні пакети, бо не найде порт 3389 в своїй таблиці трансляції.

Не слід бути таким категоричним на рахунок:
Цитата
Оскільки перенаправленням, в тому числі і "айпіх" займається ipfw, то пораджу звернутись до нього і покинути спроби зробити це nat'ом.
natd - найпростіший метод!

Цитата
Може закладемось? Що вам не шкода програти?
Мені не шкода програти ящик пива [smiley=beer.gif]. Пропозиції надсилайте персональним повідомленням, бо ми тут більше флеймим, ніж обговорюєм проблему.  :-X

Відсутній miwa

  • Літератор
  • ******
  • дописів: 1111
  • Карма: +0/-0
Re: IPFW в студію
« Відповідей #12 : 2006-04-04 17:35:24 »
До miwa

Да це все класно, але тепер наступна проблема. Як натом перенаправити одну конкретну айпіху на комп в моїй мережі по протоколу rdp???

Що вже тільки не хімічу. У файлі ната пишу
rdr rl0 моя зовнішня айпі port 3389 -> айпі компа на який перенаправляю port 3389 tcp
rdr fxp0 айпі компа в моїй мережі port 3389 -> зовнішня айпі port 3389 tcp

Шлях до ната вказую у файлі rc.conf:
natd_flags="-u -l /etc/natd.conf"

Що порадите точніше підскажите???

По моєму, попередню проблему було вирішено і далі maluy запитав як керувати комп'ютером в приватній мережі по протоколу Remote Desktop Protocol (RDP). При тому він правильно зрозумів що це потрібно робити natd'ом. Ви дезінформували його, порадивши вирішувати цю проблему методами ipfw.
Та щоб мені. Прошу вибачення - згадку про rdp зауважив лише щойно, старанно перечитавши цілу вітку.
Тоді подальшу дискусію саме з цього приводу мушу припинити - уявлення не маю, хто такий rdp і з чим його їсти.

Цитата
Прозорий проксі? Тільки-тільки натом? І більше нічим-нічим? Та ви що? І що буде, якщо перенаправлення робитимуться не natd'ом?

Ви ще й зачепили тему прозорого проксі - яка до rdp протоколу має досить віддале відношення...
Мова не йде про прозорий проксі, запитання було як перенаправити пакети з допомогою natd.
На рахунок "тільки-тільки" - здається, але я не впевнений, що протокол rdp можна перекинути з допомогою HTTPS чи SOCKS проксі.

***

Так, ipfw forward використовується в такій конфігурації для того щоб відіслати пакети  не на default gateway. Взагалі ipfw forward  використовується тільки для вибору gateway і перекиду пакетів на squid.
Інші йому застосування важко придумати, бо ipfw не модифікує пакет.
Саме це я й мав на увазі, пишучи про перенаправлення "однієї конкретної айпіхи". Ще раз наголошу - чомусь зовсім випустив з уваги слова "по протоколу rdp".


Дана конфігурація буде працювати лише тоді, коли комп'ютер яким Ви хочете керувати відіслав хоч 1 пакет з порту 3389 назовні. Інакше natd без стрічки
 redirect_port tcp 192.168.0.ххх:3389 3389в своїй конфігурації, просто не буде знати на який з локальних комп'ютерів відсилати вхідні пакети, бо не найде порт 3389 в своїй таблиці трансляції.
Так. З цього місця детальніше.
Якщо точніше - маємо мережі 192.168.100  і 192.168.10. Між ними стоїть FreeBSD 5.4 і nat, котрий "ховає" 10-ту підмережу від 100-ї. Хочете сказати, що за умови наявності рядка
 redirect_port tcp 192.168.10.0:22я зможу з 100-ї підмережі ssh-ти компютери у 10-й?

Цитата
Може закладемось? Що вам не шкода програти?
Мені не шкода програти ящик пива [smiley=beer.gif]. Пропозиції надсилайте персональним повідомленням, бо ми тут більше флеймим, ніж обговорюєм проблему.  :-X
 
А по-моєму, не варто - розмова цікава у нас виходить :о). Я ось дізнаюсь для себе щось нове про nat, інші користувачі може також щось нове вичитають.
А щодо ящика пива... Буду їхати в бік Львова - заздалегідь попереджу. Рівно те ж саме стосується вас і Коломиї - думаю, ми зможемо якось вирішити дану проблему ;о))
Читайте документацію - вона кермує.

Відсутній major

  • Новачок
  • *
  • дописів: 15
  • Карма: +0/-0
  • I Love FreeBSD!
Re: IPFW в студію
« Відповідей #13 : 2006-04-06 16:46:09 »
До miwa

Цитата
Так. З цього місця детальніше.
Якщо точніше - маємо мережі 192.168.100  і 192.168.10. Між ними стоїть FreeBSD 5.4 і nat, котрий "ховає" 10-ту підмережу від 100-ї. Хочете сказати, що за умови наявності рядка
  Код:

redirect_port tcp 192.168.10.0:22

я зможу з 100-ї підмережі ssh-ти компютери у 10-й?
 

Припущу що Ваш маршрутизатор з FreeBSD має адресу 192.168.10.1 з одного боку і 192.168.100.1 з іншого.

Тоді прописавши в конфігурації natd
redirect_port tcp 192.168.10.5:22 22і під'єднуючись з підмережі .100 до адреси 192.168.100.1 до порту 22 (стандарт для ssh) Ви під'єднаєтесь до комп'ютера з адресою 192.168.10.5
Причому прозоро - пакети йдуть на адресу 192.168.100.1, приходяь з адреси 192.168.100.1 і тільки коли ввести ifconfig можна зрозуміти куди ми потрапили  :) .

Якщо Ви хочете керувати багатьма комп'ютерами в мережі .10 я б порадив наступне
redirect_port tcp 192.168.10.5:22 10522
redirect_port tcp 192.168.10.6:22 10622
redirect_port tcp 192.168.10.7:22 10722
Тоді під'єднуючись до 192.168.100.1 до порту 10522 -- керуєм комп'ютером 192.168.10.5
            ---                   192.168.100.1 до порту 10622 -- керуєм комп'ютером 192.168.10.6
            ---                   192.168.100.1 до порту 10722 -- керуєм комп'ютером 192.168.10.7

Якщо під'єднуватись з допомогою putty то там є віконце в якому вказується порт.
Якщо з freebsd тоді ssh -p 10522 192.168.100.1 .

Стосовно можливостей natd:
прописавши
redirect_address <public ip> 192.168.0.5можна перекинути весь трафік з публічної адреси на приватну. Всі пакети від комп'ютера 192.168.0.5 і направлені в інтернет, будуть для всього інтернету виглядати як пакети з публічної адреси.

Відсутній olex

  • Новачок
  • *
  • дописів: 26
  • Карма: +0/-0
  • $ dd if=/dev/zero of=/dev/null
Re: IPFW в студію
« Відповідей #14 : 2006-06-12 22:40:29 »
щодо перекидання 1 іп по протоколу RDP розумію "необхідний доступ до комп'ютера у внутрішній мережі на його порт 3389 ззовні"
може моє рішення і не найкраще, але воно працююче і має право на життя:

cd /usr/ports/net/bounce
make install clean && rehash

потім запускаємо наступним чином:

/usr/local/sbin/bounce -a xxx.xxx.xxx.xxx -p ppp yyy.yyy.yyy.yyy PPP

, де xxx.xxx.xxx.xxx - зовнішня адреса файрвола(роутера);
ppp - порт на якому буде слухати bounce;
yyy.yyy.yyy.yyy - іп комп'ютера у внутрішній мережі;
PPP - порт на цьому ж комп'ютері.

приклад:

маємо файрвол(роутер) і зовнішньою іп 194.10.10.10 і внутрішньою iп 192.168.0.1,
маємо комп'ютер у внутрішній мережі з іп 192.168.0.100,
як дозволити клієнту з іп 194.100.10.20 доступ до 192.168.0.100 по порту 3389 крізь 194.10.10.10 ?


ipfw allow ip from any to any established
ipfw add allow tcp from 194.100.10.20 to 194.10.10.10 3389 setup
ipfw add allow tcp from 192.168.0.1 to 192.168.0.100 3389 setup

і запустити  /usr/local/sbin/bounce -a 194.10.10.10 -p 3389 192.168.0.100 3389

от і все
під'єднуємось на 194.10.10.10:3389 - а потрапляємо  на 192.168.0.100:3389