[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
#!/bin/shecho -n "#### Startuje <<<FAIREWALL>>> ###"echoipfw="/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 established${ipfw} add allow tcp from any $uports to $noute $uports in recv $ext_if established#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
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"
Є невеличка мережа, 100 компів. На перших порах користувались інтернетом тільки від одного провайдера, тепер керівництво прийшло до висновку, що потрібно ще одну ADSL поставити від іншого провайдера. (роутер А роздає нет від першого провайдер, роутер В роздає нет від нового провайдер)Задача.Зробити так щоб 100 компів юзали http, https, aol, ftp через В, а пошта працювала через А.
Сервіси які налаштованні на А:DNS, IPFW, NATD, QMAILСервіси які є на В:IPFW, NATD
***Словом ніби стало краще, але тепр я небачу щоб трафік на нат ішов!Фай natd.conf пустий, можливо там щось потрібно прописати :-/???***Отакі то справи. Чим зарадите і підскажити??? Приймаю всю критику Бо розумію, що тут ніби вже й немає нічого такого складго, але мені щось не йде воно.І ще забув. З*єднання налаштовано і працює через PPoE.
natd_enable="YES"natd_interface="rl0"natd_flags="-u -l"
firewall_enable="YES"firewall_type="/etc/fw.conf"
add 10 count ip from any to any in recv rl0add 12 count ip from any to any out xmit rl0add 20 count ip from any to any in recv tun1add 22 count ip from any to any out xmit tun1***add 46 allow ip from any to any via dvb0add 48 allow ip from any to any via tun0add 50 allow ip from any to any via tun1***
Оскільки перенаправленням, в тому числі і "айпіх" займається ipfw, то пораджу звернутись до нього і покинути спроби зробити це nat'ом. А підкажу детальніше почитати про ipfw fwd (у мані є :о) )Ось типовий приклад прозорого проксі на FreeBSD; думаю, по аналогії зробите щось своє: ipfw add fwd 127.0.0.1:3128 tcp from any to any 80,3128,8080,8888
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.
До 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 yesuse_sockets yesredirect_port tcp 192.168.1.2:20-110 20-110........Natd всі звернення з інтернету на мою зовнішню ip адресу tcp порти з 20 по 110 буде переправляти на внутрішній сервер, а в пакетах що відсилатиме цей сервер у відповідь автоматично змінить ip-адресу джерела на зовнішню. Все працює прозоро для всіх клієнтів з інтернету!
Натомість, якщо зробити так як кажете Ви нічого працювати не буде!
Коли ipfw перенаправляє пакети він не змінює адресу призначення. Комп'ютери з Windows просто проігнорують пакет що прийшов не на їх рідну ip адресу.
Такі "нетуди напрямлені пакети" може сприймати тільки спеціально розроблена програма, наприклад squid.Так що мани потрібно читати Вам
Да це все класно, але тепер наступна проблема. Як натом перенаправити одну конкретну айпіху на комп в моїй мережі по протоколу rdp???Що вже тільки не хімічу. У файлі ната пишу rdr rl0 моя зовнішня айпі port 3389 -> айпі компа на який перенаправляю port 3389 tcprdr fxp0 айпі компа в моїй мережі port 3389 -> зовнішня айпі port 3389 tcpШлях до ната вказую у файлі rc.conf:natd_flags="-u -l /etc/natd.conf"Що порадите точніше підскажите???
Прозорий проксі? Тільки-тільки натом? І більше нічим-нічим? Та ви що? І що буде, якщо перенаправлення робитимуться не natd'ом?
Та ви що? Жах якийсь. А в інтернет я вже років десять по батареях ходжу: інакше ж неможливо в принципі.Ви зауважили взагалі-то, що перенаправлятимуться пакети, котрі йдуть ВІД клієнтів локальної мережі НАЗОВНІ? І маршрутизатору просто потрібно вирішити, котрі пакети котрим каналом відправляти. А компютери з Windows отримають назад свої пакети, перетворені nat'ом, з рідними ІР.
redirect_port tcp 192.168.0.ххх:3389 3389
Оскільки перенаправленням, в тому числі і "айпіх" займається ipfw, то пораджу звернутись до нього і покинути спроби зробити це nat'ом.
Може закладемось? Що вам не шкода програти?
До miwaЦитата: maluy від 2006-02-06 18:28:50Да це все класно, але тепер наступна проблема. Як натом перенаправити одну конкретну айпіху на комп в моїй мережі по протоколу rdp???Що вже тільки не хімічу. У файлі ната пишу rdr rl0 моя зовнішня айпі port 3389 -> айпі компа на який перенаправляю port 3389 tcprdr 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 проксі. ***Так, ipfw forward використовується в такій конфігурації для того щоб відіслати пакети не на default gateway. Взагалі ipfw forward використовується тільки для вибору gateway і перекиду пакетів на squid.Інші йому застосування важко придумати, бо ipfw не модифікує пакет.
Дана конфігурація буде працювати лише тоді, коли комп'ютер яким Ви хочете керувати відіслав хоч 1 пакет з порту 3389 назовні. Інакше natd без стрічки Код: [Вибрати]redirect_port tcp 192.168.0.ххх:3389 3389в своїй конфігурації, просто не буде знати на який з локальних комп'ютерів відсилати вхідні пакети, бо не найде порт 3389 в своїй таблиці трансляції.
redirect_port tcp 192.168.10.0:22
Цитата Може закладемось? Що вам не шкода програти? Мені не шкода програти ящик пива . Пропозиції надсилайте персональним повідомленням, бо ми тут більше флеймим, ніж обговорюєм проблему.
Так. З цього місця детальніше.Якщо точніше - маємо мережі 192.168.100 і 192.168.10. Між ними стоїть FreeBSD 5.4 і nat, котрий "ховає" 10-ту підмережу від 100-ї. Хочете сказати, що за умови наявності рядка Код:redirect_port tcp 192.168.10.0:22 я зможу з 100-ї підмережі ssh-ти компютери у 10-й?
redirect_port tcp 192.168.10.5:22 22
redirect_port tcp 192.168.10.5:22 10522redirect_port tcp 192.168.10.6:22 10622redirect_port tcp 192.168.10.7:22 10722
redirect_address <public ip> 192.168.0.5