рдиреИрдЯ рдФрд░ ipfw рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкрд╣реБрдВрдЪ рдХрд╛ рд╕рдВрдЧрдарди

рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреА рдХреНрд▓рд╛рд╕рд┐рдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдпреЛрдЬрдирд╛ред


рдЖрдВрдХрдбрд╝рд╛ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреЛрдЬрдирд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕реЗрд╕ (ISP1) рдФрд░ рдмреИрдХрдЕрдк (ISP2) рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЪреИрдирд▓, рдЬреЛ рдореБрдЦреНрдп рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред
рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЖрдорддреМрд░ рдкрд░ рд░рд╛рдЙрдЯрд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧреЗрдЯрд╡реЗ рдХреЛ рдмрджрд▓рдХрд░ рдХреА рдЬрд╛рддреА рд╣реИред

рдФрд░ рдЕрдЧрд░ рд░рд╛рдЙрдЯрд░ рдкрд░ рдРрд╕реА рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдмрд╛рд╣рд░ рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рддреЛ рдпреЗ рд╕реЗрд╡рд╛рдПрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдЪреИрдирд▓ рдХреЗ рдмрд╛рд╣рд░реА рдкрддреЗ рдкрд░ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЪреИрдирд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рд╕рдХреНрд░рд┐рдп рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЦреЛ рдЬрд╛рдПрдВрдЧреЗред ред рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреАрдЬреАрдкреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдПрдХ рдордВрдЪ рдкрд░ рд╕рд▓рд╛рд╣ рджреА рдЧрдИ рдереА, рдПрдХ рддреЛрдк рд╕реЗ рдЧреМрд░реИрдпрд╛ рдХреА рд╢реВрдЯрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рджреБрд░реНрд▓рдн рдкрд╛рдЧрд▓рдкрди рд╣реИ , рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рджрд╛рддрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ ipfw рдФрд░ natd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕рд╛рде рджреЛрдиреЛрдВ рдмрд╛рд╣рд░реА рдкрддреЛрдВ рдкрд░ рд╕реЗрд╡рд╛рдПрдВ рдХреИрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдИ рдЬрд╛рдПред


рд╕реНрд░реЛрдд рдбреЗрдЯрд╛
FREEBSD 6.3 рдХреЗ рд╕рд╛рде рд░рд╛рдЙрдЯрд░
рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ 192.168.1.0/24, рдЬрд┐рд╕реЗ рд╣рдо рдбрд╛рд▓реЗрдВрдЧреЗред
Re0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IP рдкрддрд╛ 192.168.1.1 рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ
Xl0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IP рдкрддреЗ рдХреЗ рд╕рд╛рде ISP1 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ 111.111.111.1
ISP2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рджреЗрдЦрдиреЗ рд╡рд╛рд▓рд╛ xl1 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IP рдкрддреЗ 222.222.222.1 рдХреЗ рд╕рд╛рде рд╣реИ
рд╕реЗрд╡рд╛рдПрдВ рдЬреЛ 111.111.111.1 рдФрд░ 222.222.222.1 рдкрд░ рдПрдХ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдИ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓реЗ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЧреЗрдЯрд╡реЗ: 111.111.111.2
рджреВрд╕рд░реЗ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЧреЗрдЯрд╡реЗ: 222.222.222.2

рдкреАрдПрдл рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдкреАрдПрдл рдореЗрдВ рдПрдХ рдЬрд╛рджреБрдИ рдЙрддреНрддрд░ рд╣реИ () рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред IPFW рдореЗрдВ, рд╕рдорд╛рдзрд╛рди рдЗрддрдирд╛ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪрд▓реЛ рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рджреЛрдиреЛрдВ рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдиреИрдЯ рдХреЛ рд▓рдЯрдХрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдЕрдиреБрд╡рд╛рдж рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЙрдирдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪрд▓реЛ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдПрдЯреАрдбреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
/etc/rc.conf
natd_program="/sbin/natd" natd_enable="YES" natd_flags="-f /etc/natd.conf" 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

/etc/natd.conf
 log instance default interface xl0 port 8668 use_sockets yes same_ports yes instance xl1 interface xl1 port 8669 use_sockets yes same_ports yes globalport 8670 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдиреИрдЯрдб рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдЧреАред

IPFW рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдореИрдВ рдпрд╣рд╛рдВ рд╕реБрд░рдХреНрд╖рд╛ рдирд┐рдпрдо рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдпрд╣ рдПрдХ рдЕрдВрддрд░рдВрдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдФрд░ рдХрд╛рд░реНрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрди рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

/etc/rc.firewall
 ipfw="/sbin/ipfw -q " local="re0" ISP1="xl0" ISP2="xl1" localnet="192.168.1.0/24" ISP1_ip="111.111.111.1" ISP2_ip="222.222.222.1" ISP1_gw="111.111.111.2" ISP2_gw="222.222.222.2" nat_ISP1="8668" nat_ISP2="8669" nat_glob="8670" ${ipfw} -f flush #        . # sshd ${ipfw} add 20 allow tcp from any to me 22 # Web Server ${ipfw} add 25 allow tcp from any to me 80 # MailServer ${ipfw} add 26 allow tcp from any to me 25 ${ipfw} add 27 allow tcp from any to me 110 #   . #            ,         ,     . ${ipfw} add 100 fwd ${ISP1_gw} ip from ${ISP1_ip} to not ${localnet} ${ipfw} add 200 fwd ${ISP2_gw} ip from ${ISP2_ip} to not ${localnet} #        ,   #   ${ipfw} add 400 skipto 1000 all from any to any in recv ${local} ${ipfw} add 410 skipto 2000 all from any to any out xmit ${local} #   ${ipfw} add 500 skipto 3000 all from any to any in recv ${ISP1} ${ipfw} add 550 skipto 4000 all from any to any out xmit ${ISP1} ${ipfw} add 600 skipto 5000 all from any to any in recv ${ISP2} ${ipfw} add 650 skipto 6000 all from any to any out xmit ${ISP2} #        .      ,             ${ipfw} add 900 deny all from any to any #   ${ipfw} add 1000 allow all from any to any #   ${ipfw} add 2000 allow all from any to any # ISP1  (      natd) ${ipfw} add 3000 divert ${nat_ISP1} ip from any to ${ISP1_ip} ${ipfw} add 3010 allow all from any to any # ISP1  (   ) #    natd   globalport ${ipfw} add 4000 divert ${nat_global} ip from ${localnet} to any #       ,  natd         ,     #     ,           ${ipfw} add 4010 allow all from ${ISP1_ip} to any #     ,        . ${ipfw} add 4020 fwd ${ISP2_gw} ip from ${ISP2_ip} to any #   natd   ,        ,       natd ${ipfw} add 4030 divert ${nat_ISP1} ip from ${localnet} to any #   . ${ipfw} add 4040 allow all from any to any #      # ISP2  ${ipfw} add 5000 divert ${nat_ISP2} ip from any to ${ISP2_ip} ${ipfw} add 5010 allow all from any to any # ISP2  ${ipfw} add 6000 divert ${nat_global} ip from ${localnet} to any ${ipfw} add 6010 allow all from ${ISP2_ip} to any ${ipfw} add 6020 fwd ${ISP1_gw} ip from ${ISP1_ip} to any ${ipfw} add 6030 divert ${nat_ISP2} ip from ${localnet} to any ${ipfw} add 6040 allow all from any to any 

рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рджреЛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд╛рдЙрдЯрд░ рдкрд░ рдореБрдЦреНрдп рдЧреЗрдЯрд╡реЗ рдХреЛ рдмрджрд▓рдХрд░ рдЪреИрдирд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдореБрдЦреНрдп рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдорд╛рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рдореБрдЦреНрдп рдЧреЗрдЯрд╡реЗ рдХреЛ рдмреИрдХрдЕрдк рдЪреИрдирд▓ рдЧреЗрдЯрд╡реЗ рдореЗрдВ рдмрджрд▓реЗрдВред

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
рдЖрджрдореА natd
рдЖрджрдореА рдЖрдИрдкреАрдПрдлрдбрдмреНрд▓реНрдпреВ

рдпреБрдкреАрдбреА

рд░реВрдЯрд┐рдВрдЧ рд╕реНрд╡рд┐рдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
 #!/bin/sh IP1=111.111.111.1 IP2=222.222.222.1 GW1=111.111.111.2 GW2=222.222.222.2 /sbin/ping -q -c 1 -S $IP1 yandex.ru > /dev/null 2>&1 if [ $? != 0 ]; then /sbin/ping -q -c 1 -S $IP2 yandex.ru > /dev/null 2>&1 if [ $? = 0 ]; then if [ ! -f /tmp/gw.changed ]; then /sbin/route change default $GW2 && touch /tmp/gw.changed fi fi else if [ -f /tmp/gw.changed ]; then /sbin/route change default $GW1 && rm /tmp/gw.changed fi fi 


рдпрд╣реА рд╣реИ, рд╣рдо рдмрд╕ рд╡рд╛рдВрдЫрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╕рд╛рдзрди "рдкрд┐рдВрдЧ" (рдкрд┐рдВрдЧ рдХрдорд╛рдВрдб рдореЗрдВ рдзреНрд╡рдЬ)
рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдореБрдЦреНрдп рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рддреЛ:
- рд╣рдо рдмреИрдХрдЕрдк рдЪреИрдирд▓ рдХреА рд╕рдВрдЪрд╛рд▓рди рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ;
- рдмреИрдХрдЕрдк рдЪреИрдирд▓ рдЧреЗрдЯрд╡реЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ;
- рдЧреЗрдЯрд╡реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП "рд▓реЗрдмрд▓" /tmp/gw.changed рдЫреЛрдбрд╝ рджреЗрдВред

рдЕрдЧрд▓реЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХреНрд░реЛрди рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдпрджрд┐ GW1 рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдПрдХ "рд▓реЗрдмрд▓" рд╣реИ, рддреЛ рд╣рдо рдореБрдЦреНрдп рдЧреЗрдЯрд╡реЗ рдХреЛ рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рджреЛрдиреЛрдВ рдЧреЗрдЯрд╡реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИрдВ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдФрд░ рд╕рд░рд▓рддрд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреБрдХрд╕рд╛рди - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЬрдбрд╝рддрд╛, рднрд▓реЗ рд╣реА рдЫреЛрдЯреЗ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЧреИрд░-рдЙрддреНрдкрд╛рджрдХ рдпрд╛рддрд╛рдпрд╛рдд рд▓рд╛рдЧрдд, рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреА рдЧреИрд░-рд╢реВрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдЙрдЪреНрдЪ рдЪреИрдирд▓ рд▓реЛрдб рдХреЗ рд╕рд╛рдеред

рджреЛрдиреЛрдВ рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рд╕реНрд╡рдпрдВ рд╕рдВрд╕рд╛рдзрди (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╛рдВрдбреЗрдХреНрд╕) рдХреА рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛ рдЪреИрдирд▓ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреА рдУрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рд╕рдВрдЪрд╛рд▓рдирд╢реАрд▓рддрд╛ рдХреА рднреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред

Source: https://habr.com/ru/post/In124447/


All Articles