FreeBSD рдкрд░ рд╕рд░рд▓ рд╣реЙрдЯрд╕реНрдкреЙрдЯ

рд╢реБрдн рджрд┐рдиред
рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдмрд┐рдВрджреБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ UNIX рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдореИрдВрдиреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд▓реЛрд╣рд╛ рдЦрд░реАрджрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдмрд╣реБрдд рдХрдо рдереАрдВред рдЕрд░реНрдерд╛рддреН, рд╡рд╛рдИрдлрд╛рдИ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдХрдбреЙрдирд▓реНрдбреНрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ред рдпрд╛рдиреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рдФрд░ рд╢рд╛рдВрддрд┐ рд╕реЗ рдЕрдкрдиреЗ 30 рдорд┐рдирдЯ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЖрдпрд╛ред рдпрд╛ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ 15 рдореЗрдЧрд╛рдмрд╛рдЗрдЯред


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

рдореИрдВрдиреЗ FreeBSD 8.2 рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдпреЛрдЬрдирд╛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдФрд░ рдРрд╕рд╛ рд╣реИред рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 2 рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╣реИрдВ, рдПрдХ рд╡рд╛рдИрдлрд╛рдИ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рд╣реИред рд▓реЛрд╣реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред
рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ FreeBSD, Apache, PHP, MySQL, ISC-dhcpd рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЧрддрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NAT рдФрд░ рдкрд╛рдЗрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрд░реНрдиреЗрд▓ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдпрд╣ Google рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреВрдВрдЧрд╛ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдХрд░реНрдиреЗрд▓ рдмрдирд╛рдпрд╛ рдерд╛:

options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"


рдЕрдЧрд▓рд╛, рдХрд░реНрдиреЗрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Apache, PHP рдФрд░ MySQL рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рднреА рднрд░реА рд╣реБрдИ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпрд╣рд╛рдБ рдЪрд┐рддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ред

рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ rc.conf рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ :

defaultrouter="1.1.1.1" # .
gateway_enable="YES" # .

ifconfig_re0="inet 1.1.1.2 netmask 255.255.255.252" # , .
ifconfig_re1="inet 10.128.1.1 netmask 255.255.255.0" # , Wi-Fi .

inetd_enable="YES"
sshd_enable="YES" # SSH
sendmail_enable="NO" # Sendmail

firewall_enable="YES" #
firewall_nat_enable="YES" #
dummynet_enable="YES" # Dummynet. .
firewall_script="/etc/firewall.sh" # .


рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдкрд╣рд▓реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╡рд╛рдИ-рдлрд╛рдИ рдмрд┐рдВрджреБ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреАрдПрдЪрд╕реАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░, рдЬрдм рд╡рд╣ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рдлреЗрдВрдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдореЗрдВ, рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдПрдХ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреГрд╖реНрда рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрдЯрди рд╣реИ - "рдПрдХреНрд╕реЗрд╕"ред рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рдирд┐рдпрдо рдЖрдкрдХреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдИрдкреА рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд░ рдорд┐рдирдЯ, рдХреНрд░реЛрди рдбреЗрдореЙрди рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рддрдиреА рджреЗрд░ рддрдХ рдСрдирд▓рд╛рдЗрди рд╣реИ рдФрд░ рдЙрд╕рдиреЗ рдХрд┐рддрдирд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЦрд╛рдпрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдо рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдВрдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЕрдиреБрдорддрд┐ рдирд┐рдпрдо 200 рд╕реЗ 600 рддрдХ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЕрдЧреНрд░реЗрд╖рдг рдирд┐рдпрдо 1000 рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдЧрд╛ред

/etc/firewall.sh :

ipfw -q flush

ipfw pipe 1 config bw 512Kbit/s mask dst-ip 0x00000001 #
ipfw pipe 2 config bw 256Kbit/s mask dst-ip 0x00000001 #

ipfw nat 1 config log if re0 reset same_ports # , .

ipfw add 120 nat 1 ip from 10.128.1.0/24 to any via re0 #
ipfw add 121 nat 1 ip from any to 192.168.24.154 via re0 # .

ipfw add 1000 fwd 10.128.1.1,80 tcp from any to any 80 via re1 # , .


рд╣рдорд╛рд░реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдкрд░ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ " .htaccess " рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (httpd.conf рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж) рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:

RewriteEngine on
ErrorDocument 404 10.128.1.1/index.php

рдлрд┐рд░, рднрд▓реЗ рд╣реА рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рди рдХреЗрд╡рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ (http://habrahabr.ru) рдмрд▓реНрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда (http://habrahabr.ru/i/habr.gif) рднреА рд╣реЛрдВ, рд╡рд╛рдВрдЫрд┐рдд рдкреГрд╖реНрда рдЕрднреА рднреА рдЦреБрд▓реЗрдЧрд╛ред

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

MySQL рдЯреЗрдмрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд░рд▓ рд╣реИред рдирд┐рдпрдо рд╕рдВрдЦреНрдпрд╛, рд╕рддреНрд░ рдкреНрд░рд╛рд░рдВрдн рд╕рдордпред

 CREATE TABLE `hotspot` ( `time_begin` timestamp NOT NULL default '0000-00-00 00:00:00', `rule_num` smallint(5) unsigned NOT NULL, KEY `rule_num` (`rule_num`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 ; 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╕рд╛рдЗрдЯ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЪрд▓рд┐рдП config.php рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 <?php //     : define('conf_DB_HOST', 'localhost'); define('conf_DB_USER', 'root'); define('conf_DB_PASS', ''); define('conf_DB_NAME', 'hotspot'); define('RULE_NUM_MIN', 200); //,     ,  . define('CLIENTS_TIME', '1800'); //   30  ( ) define('CLIENTS_TRAF', '30'); //    //,        define('RULE_ADD_IP', '/usr/local/bin/sudo /sbin/ipfw add %s pipe 1 ip from any to %s'); define('RULE_ADD_IP2', '/usr/local/bin/sudo /sbin/ipfw add %s pipe 2 ip from %s to any'); define('RULE_DEL_IP', '/usr/local/bin/sudo /sbin/ipfw delete %s'); define('RULE_DEL_IP2', '/usr/local/bin/sudo /sbin/ipfw delete %s'); //   . $db_link = mysql_connect(conf_DB_HOST, conf_DB_USER, conf_DB_PASS); if (!$db_link) echo('Connect Error!'); if (!mysql_select_db(conf_DB_NAME, $db_link)) echo('Connect Error'); ?> 


рдЕрдЧрд▓рд╛, рдореБрдЦреНрдп рдкреГрд╖реНрда рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡рд╣ рд╣реИ index.php :
 <H1>   Wi-Fi !<br>    30   30  . </H1> <?php $redir='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo('<form method=GET action="open.php">'); echo("<input type=hidden name=redir value=$redir>"); echo('<input value=" !" type="submit"></form>'); ?> 


рдпрд╣ рдкреГрд╖реНрда рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдХреМрди рд╕рд╛ рдкрддрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рддрдм рдЗрд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣, рдПрдХ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рдУрдкрди.рдлреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдХрд░рддрд╛ рд╣реИ:
 <?php require_once('config.php'); $user_ip = $_SERVER['REMOTE_ADDR']; $current_date = time(); //       .      200.    RULE_NUM_MIN. $temp = 0; $sql = 'SELECT rule_num FROM hotspot ORDER BY rule_num'; $res = mysql_query($sql); if ($res) { $t = mysql_fetch_array($res); if (!$t) $rule_num = RULE_NUM_MIN; else { while ($temp = mysql_fetch_array($res)) { if (($t[0]+1) < $temp[0]) break; $t = $temp; } $rule_num = $t[0]+1 } } else return false; //     2 .  - " ",  " ".      200  .      200 . $command = sprintf(RULE_ADD_IP, $rule_num, $user_ip); exec($command); $command2 = sprintf(RULE_ADD_IP2, $rule_num+200, $user_ip); exec($command2); //        . $sql = 'INSERT INTO hotspot (time_begin, rule_num) values (NOW(),'.$rule_num.')'; mysql_query($sql); //    ,     . $redir=$_GET['redir']; header("Location: $redir"); return true; ?> 


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

рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ, рдмрд╕ред
рдореВрд▓ рд░реВрдк рд╕реЗ рдЯреНрд░реИрдлрд╝реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдПрдХ рддреЛрдк рд╕реЗ рдПрдХ рдЧреМрд░реИрдпрд╛ рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдорд╛рдирддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЕрд░реНрдерд╛рддреН IPFWред рдЬрдм ipfw рд╢реЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ 3 рдХреЙрд▓рдо рдореЗрдВ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдирд┐рдпрдо рд╣реЛрдЧрд╛, рдлрд┐рд░ рдирд┐рдпрдо рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
Cron.php рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░реЗрдЧреА:
 <?php require_once('config.php'); //     ,      ,            . $sql = 'SELECT * FROM hotspot WHERE time_begin > 0 AND (TIME_TO_SEC(TIMEDIFF(NOW(), time_begin)) > '.CLIENTS_TIME.')'; $res = mysql_query($sql); if ($res) { while ($user = mysql_fetch_assoc($res)) { block($user['rule_num']); } } //    IPFW        .     - . $sql = 'SELECT * FROM hotspot WHERE 1'; $res = mysql_query($sql); if ($res) { while ($user = mysql_fetch_array($res)) { $rule=$user['rule_num']; exec("/usr/local/bin/sudo /sbin/ipfw show $rule | awk '{print($3)}'",$ct); if($ct[0]>=CLIENTS_TRAF*1024*1024) block($rule); } } return true; //,         . function block($num) { $command = sprintf(RULE_DEL_IP, $num); exec($command); $command2 = sprintf(RULE_DEL_IP2, $num+200); exec($command2); $sql = 'DELETE FROM hotspot WHERE rule_num='.$num; mysql_query($sql); } ?> 


рдЕрдм рд╣рдо рдХреНрд░реЙрд╕реНрдЯреИрдм рдореЗрдВ рдПрдХ рдкреЗрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧреА рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рд╕реАрдорд╛ рдкрд╛рд░ рдХрд░ рд▓реА рд╣реИ:
*/1 * * * * /usr/local/bin/php /var/www/data/cron.php

рд╡рд╣ рд╕рдм рдорд╛рд▓реВрдо рд╣реЛрддрд╛ рд╣реИред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкрде, рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рдирд╛рдо рдФрд░ рдХреБрдЫ рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ,

PS рдореИрдВ рд▓рдЧрднрдЧ рдбреАрдПрдЪрд╕реАрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ред рдпрд╣рд╛рдБ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
# .
option domain-name "hotspot.my";
# . .
option domain-name-servers 8.8.8.8;

# . .
default-lease-time 600;
max-lease-time 7200;

# . .
subnet 10.128.1.0 netmask 255.255.255.0 {
range 10.128.1.20 10.128.1.220;
option routers 10.128.1.1;
}


рдЕрдм рд╕рдм рдХреБрдЫ рд▓рдЧрддрд╛ рд╣реИред

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


All Articles