рдирдорд╕реНрдХрд╛рд░, рдкреНрдпрд╛рд░реЗ рдЦрдмреНрд░реЛрд╡рд┐рддреНрд╕ред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ, рдореЗрд░реА рддрд░рд╣, рдиреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬрдм рд╣рдореЗрдВ Iptables рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдЖрднрд╛рд╕реА / рднреМрддрд┐рдХ рдорд╢реАрдиреЛрдВ рдХреЛ рдкреЛрд░реНрдЯ (рдУрдВ) рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдкреНрд░рджрд╛рддрд╛ рд╣рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ (рдЧреНрд░реЗ рдирд╣реАрдВ) рдЧрддрд┐рд╢реАрд▓ рдЖрдИрдкреА рдкрддрд╛ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡реАрдкреАрдПрди рдпрд╛ рдкреАрдкреАрдкреАрдУрдИ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ
рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рддреАрди рджрд┐рдиреЛрдВ рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ PPPoE рдФрд░ IP рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЪрд╛рд╣реЗ рдореЗрд░рд╛ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдХреЛрдИ рднреА рд╣реЛред
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕: Ubuntu 10.04 рдкрд░ рдПрдХ рд╕рд░реНрд╡рд░:
(Linux nwserver 2.6.32-40- рд╕рд░реНрд╡рд░ # 87-Ubuntu SMP Tue Mar 6 02:10:02 UTC 2012 x86_64 GNU / Linux, iptables v1.4.4) рдФрд░ рджреВрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп:
1.) рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
(рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдордд рднреВрд▓рдирд╛) ред рд╣рдорд╛рд░реЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рд░рд┐рдпрд▓ рдЖрдИрдкреА рдХреЛ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
touch /tmp/ip_old
2. рдЕрдм рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ 0TPup рдХрд╣рд╛:
IPT="/sbin/iptables -v"
REAL_IP=`cat /tmp/ip_old`
#
VSERV_IP=192.168.200.2
# , , 80 81 , -
$IPT -t nat -A PREROUTING -d $REAL_IP -p tcp -m tcp --dport 81 -j DNAT --to-destination $VSERV_IP:80
$IPT -t nat -A POSTROUTING -d $VSERV_IP -p tcp -m tcp --dport 81 -j SNAT --to-source $REAL_IP
# , , ssh,
$IPT -t nat -A PREROUTING -d $REAL_IP -p tcp -m tcp --dport 22 -j DNAT --to-destination $VSERV_IP:22
$IPT -t nat -A POSTROUTING -d $VSERV_IP -p tcp -m tcp --dport 22 -j SNAT --to-source $REAL_IP
# , ( )
# IP ppp0, ,
ip addr show ppp0 | grep "inet" | grep "peer" | awk '{print $2}' > /tmp/ip_old
#
REAL_IP=`cat /tmp/ip_old`
3.) рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: chmod + x 0iptup
рд╣рдо рдЗрд╕реЗ /etc/init.d/ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ-rc.d: update-rc.d 0iptup рдбрд┐рдлреЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ
рдЗрд╕реЗ /etc/ppp/ip-up.d/ рдореЗрдВ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдБ
4.) рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░, /etc/init.d/ рдореЗрдВ рд╣рдо рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ 0iptdown рдмрдирд╛рддреЗ рд╣реИрдВ:
#!/bin/sh
iptables-restore < /etc/iptables.up.rules
рд╣рдо рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ-рдЖрд░рдбреАрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: рдЕрдкрдбреЗрдЯ- rc.d 0iptdown рдЪреВрдХ
рдЗрд╕реЗ /etc/ppp/ip-down.d/ рдореЗрдВ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдБ
Iptables рдХреЗ рдирд┐рдпрдо рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рдЕрдкрдиреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдлрд╝рд┐рд▓реНрдЯрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ:
*filter
-A FORWARD -i ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -i ppp0 -p tcp -m tcp --dport 81 -j ACCEPT
COMMIT
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдЬрдм ppp0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдирд┐рдпрдореЛрдВ рдХреЛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдареАрдХ рд╕реЗ рддрдм рддрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ ppp0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрддрд╛, рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдореВрд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓реМрдЯрд╛ рджреЗрддреА рд╣реИ, рдЬреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ ред
рдлрд┐рд░ dyn-dns, no-ip, рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИ, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ / рдЯреЗрд╕реНрдЯ рдорд╢реАрдиреЛрдВ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди: рдпрджрд┐, рдХрд╣рддреЗ рд╣реИрдВ, рдПрдХ рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рдЖрдкрдХреЗ рд▓рдбрд╝рд╛рдХреВ рд╡рд╛рд╣рди рдкрд░ рдШреВрдо рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓реЛрдЧ рдЗрд╕реЗ рд╕реЗ ppp1, ppp2 рдЖрджрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдХреЛрдИ рднреА ppp0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ - рдЕрдЧреНрд░реЗрд╖рдг рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣рдлреНрддреЗ рдХрд╛ рдлрд▓ рдФрд░ рдПрдХ рдЖрдзрд╛ рдкреАрдбрд╝рд╛ рдФрд░ рдзреВрдореНрд░рдкрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЖрджрдореА iptablesред
рдкрд░рд┐рд╡рд░реНрдзрди рдФрд░ рд╕реБрдзрд╛рд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред