рд╕рд┐рд╕реНрдЯрдо рдХреА рддреИрдпрд╛рд░реА
aptitude update 
      
        
        
        
      
     aptitude install openssh-server mc mtr tracert nano tcpdump bind9 pppoe freeradius radiusclient1 rcconf php5
      
      DNS рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк
рд╣рдо рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ
nano /etc/bind/named.conf.options
      
      рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
allow-transfer { none; }; 
      
        
        
        
      
     allow-query { 10.128.0.0/16; localhost; }; //   
      
        
        
        
      
     allow-recursion { 10.128.0.0/16; localhost; }; //   
      
        
        
        
      
     version "My ISP DNS"; //     
      
        
        
        
      
    
      
      рдЖрдЗрдП рд╣рдорд╛рд░реЗ DNS рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЪреЗрд░реЛрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред DNS рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдЯ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ - root-dns:
mkdir -p /root-dns/etc 
      
        
        
        
      
     mkdir /root-dns/dev 
      
        
        
        
      
     mkdir -p /root-dns/var/cache/bind 
      
        
        
        
      
     mkdir -p /root-dns/var/run/bind/run 
      
        
        
        
      
     /etc/init.d/bind9 stop 
      
        
        
        
      
     nano /etc/default/bind9
      
      рд▓рд╛рдЗрди "рд╡рд┐рдХрд▓реНрдк =" рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
OPTIONS="-u bind -t /root-dns"
      
      mv /etc/bind /root-dns/etc 
      
        
        
        
      
     ln -s /root-dns/etc/bind /etc/bind 
      
        
        
        
      
     nano /etc/init.d/bind9 
      
        
        
        
      
    
      
      рд▓рд╛рдЗрди "рд╡рд┐рдХрд▓реНрдк =" рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
OPTIONS="-u bind -t /root-dns"
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/init.d/rsyslogd
      
      "RSYSLOGD_OPTIONS" рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:
RSYSLOGD_OPTIONS="-c3 -a /root-dns/dev/log"
      
      рд╣рдо name.conf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрди рдФрд░ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВ:
chattr +i /root-dns/etc/bind/named.conf
      
      рдиреЛрдЯред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ "i" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ (chattr -i ...)
mknod /root-dns/dev/null c 1 3 
      
        
        
        
      
     mknod /root-dns/dev/random c 1 8 
      
        
        
        
      
     chmod 666 /root-dns/dev/null /root-dns/dev/random 
      
        
        
        
      
     chown -R bind:bind /root-dns/var/* 
      
        
        
        
      
     chown -R bind:bind /root-dns/etc/bind 
      
        
        
        
      
     /etc/init.d/bind9 start 
      
        
        
        
      
    
      
      PPPoE рд╕рд░реНрд╡рд░
cd /tmp 
      
        
        
        
      
     apt-get build-dep pppoe 
      
        
        
        
      
     apt-get source pppoe 
      
        
        
        
      
     cd rp-pppoe-3.8/src 
      
        
        
        
      
     ./configure 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano config.h
      
      рдЕрдм рдмрд╕ рдмрдирд╛рдП рдЧрдП config.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдкрдХреЛ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
/* #undef HAVE_LINUX_KERNEL_PPPOE */
      
      рд▓рд╛рдЗрди рдкрд░:
#define HAVE_LINUX_KERNEL_PPPOE 1
      
      рд╣рдо рдмрд╛рд╣рд░ рд▓реЗ:
cd .. 
      
        
        
        
      
     ./debian/rules PLUGIN_PATH=/usr/lib/pppd/2.4.4/rp-pppoe.so 
      
        
        
        
      
     ./debian/rules binary 
      
        
        
        
      
     cd .. 
      
        
        
        
      
     dpkg -i pppoe_3.8-3_i386.deb 
      
        
        
        
      
    
      
      рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЛ рдлреНрд░реАрдЬ рдХрд░реЗрдВ:
echo pppoe hold | dpkg тАФset-selections
      
      рдЕрдм рд╕реЗ, рдХрдо рд╕реЗ рдХрдо рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдПрдХ рдЕрджреНрдпрддрди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ pppoe рдХреЗ рд▓рд┐рдП рдЬреЛ рднреЗрджреНрдпрддрд╛ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рдХреЛ рдирдП рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:
echo pppoe install | dpkg --set-selections
      
      рдЕрдм рд╕рд┐рд╕реНрдЯрдо рдкрд░ PPPoE рд╕рд░реНрд╡рд░ рд╡рд╛рд▓рд╛ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ PPPoE рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрдорд╛рдВрдб рдореЗрдВ -k рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗрдВ: pppoe-server -I eth1 -L 192.168.0.1 -k
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/pppoe-server-options
      
      рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ:
logfile /var/log/pppoe.log 
      
        
        
        
      
     debug 
      
        
        
        
      
     mtu 1472 
      
        
        
        
      
     mru 1472 
      
        
        
        
      
     auth 
      
        
        
        
      
     require-pap 
      
        
        
        
      
     #require-chap 
      
        
        
        
      
     default-asyncmap 
      
        
        
        
      
     ktune 
      
        
        
        
      
     lcp-echo-interval 20 
      
        
        
        
      
     lcp-echo-failure 2 
      
        
        
        
      
     ms-dns 10.128.0.1 
      
        
        
        
      
     plugin radius.so 
      
        
        
        
      
     plugin radattr.so 
      
        
        
        
      
     10.128.0.1: 
      
        
        
        
      
     nobsdcomp 
      
        
        
        
      
     noccp 
      
        
        
        
      
     noendpoint 
      
        
        
        
      
     noipdefault 
      
        
        
        
      
     noipx 
      
        
        
        
      
     novj 
      
        
        
        
      
     receive-all
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/options
      
      рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рдЖрджрд┐ / ppp / рд╡рд┐рдХрд▓реНрдк рдореЗрдВ: рд╕рдм рдХреБрдЫ рдирд┐рдХрд╛рд▓реЗрдВ, рд╕реЗрдЯ рдХрд░реЗрдВ:
lock
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/init.d/pppoe-server 
      
        
        
        
      
    
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/bash 
      
        
        
        
      
     # init file for rp-pppoe server 
      
        
        
        
      
     # 
      
        
        
        
      
     # description: PPPOE kernel mode server 
      
        
        
        
      
     # 
      
        
        
        
      
     # processname: pppoe-server 
      
        
        
        
      
     # chkconfig: - 45 45 
      
        
        
        
      
     # source function library 
      
        
        
        
      
     #. /etc/rc.status 
      
        
        
        
      
     case "$1" in 
      
        
        
        
      
     start) 
      
        
        
        
      
     echo -n "Starting PPPOE server: " 
      
        
        
        
      
     /usr/sbin/pppoe-server -I eth0 -L 10.128.0.1 -R 10.128.1.1 -k 
      
        
        
        
      
     # eth0 тАФ ,      
      
        
        
        
      
     #10.128.0.1 - IP PPPoE  
      
        
        
        
      
     #10.128.1.1 -  IP   
      
        
        
        
      
     #touch /var/lock/subsys/pppoed 
      
        
        
        
      
     #rc_status -v 
      
        
        
        
      
     ;; 
      
        
        
        
      
     stop) 
      
        
        
        
      
     echo -n "Shutting down PPPOE server: " 
      
        
        
        
      
     pkill pppoe-server 
      
        
        
        
      
     #rm -f /var/lock/subsys/pppoed 
      
        
        
        
      
     #rc_status -v 
      
        
        
        
      
     ;; 
      
        
        
        
      
     restart) 
      
        
        
        
      
     $0 stop 
      
        
        
        
      
     $0 start 
      
        
        
        
      
     ;; 
      
        
        
        
      
     status) 
      
        
        
        
      
     status pppoe-server 
      
        
        
        
      
     ;; 
      
        
        
        
      
     *) 
      
        
        
        
      
     echo "Usage: pppoed {start|stop|restart|status}" 
      
        
        
        
      
     exit 1 
      
        
        
        
      
     esac 
      
        
        
        
      
     exit 0 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
rcconf
      
      рдмрд╛рдБрдз рдЕрдХреНрд╖рдо рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рд╡рд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рд╕реВрдЪреА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рдпрд╣ рд╡рд╣рд╛рдБ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рд╣рдорд╛рд░реЗ pppoe- рд╕рд░реНрд╡рд░ рд╣реИред рдЙрдирдореЗрдВ рдпрд╣ рдФрд░ рд╡рд╣ рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рдереЗред рдЖрдЙрдЯред
cd /root-dns/etc/bind 
      
        
        
        
      
     rndc-confgen -r /dev/urandom -a 
      
        
        
        
      
     chgrp bind rndc.key 
      
        
        
        
      
     chmod +r rndc.key 
      
        
        
        
      
     nano named.conf.options 
      
        
        
        
      
    
      
      рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЬреЛрдбрд╝реЗрдВ:
controls { 
      
        
        
        
      
     inet 127.0.0.1 allow { localhost; } keys { rndc-key; }; 
      
        
        
        
      
     }; 
      
        
        
        
      
     include "/etc/bind/rndc.key"; 
      
        
        
        
      
    
      
      рдЕрдм рдЖрдкрдХреЛ рдЕрднреА рднреА рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ iptables рдирд┐рдпрдо рдХреЛ рд╣реБрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреИрд░рд╛рдореАрдЯрд░ sysctl.conf, iptables, рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/sysctl.conf
      
      рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рдирд╣реАрдВ рдерд╛:
net.ipv4.conf.default.rp_filter=1 
      
        
        
        
      
     net.ipv4.conf.all.rp_filter=1 
      
        
        
        
      
     net.ipv4.tcp_syncookies=1 
      
        
        
        
      
     net.ipv4.ip_forward=1 
      
        
        
        
      
     kernel.panic = 1 
      
        
        
        
      
     kernel.panic_on_oops = 1 
      
        
        
        
      
     kernel.panic_on_io_nmi = 1 
      
        
        
        
      
     kernel.panic_on_unrecovered_nmi = 1
      
      рдЕрдВрддрд┐рдо 4 рд▓рд╛рдЗрдиреЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рдХреЗ рджреМрд░рд╛рди рд░рд┐рдмреВрдЯ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдмреВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рджреВрд╕рд░реЗ рд╢рд╣рд░ рдХреА рдпрд╛рддреНрд░рд╛ рди рдХрд░реЗрдВред рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛, рдлрд┐рд░ iptables рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реЗрдВ:
iptables -t nat -F 
      
        
        
        
      
     iptables-save > /etc/firewall.conf 
      
        
        
        
      
     nano rc.local 
      
        
        
        
      
    
      
      рдЕрдм r.local рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реЛрдЧрд╛:
ifconfig eth0 up 
      
        
        
        
      
     iptables-restore </etc/firewall.conf 
      
        
        
        
      
    
      
      рдЗрд╕рдХреЗ рдмрд╛рдж, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдЖрджрд┐ / рдиреЗрдЯрд╡рд░реНрдХ / рдЗрдВрдЯрд░рдлреЗрд╕ - рдпрд╣рд╛рдБ eth0 рд╕реНрдерд╛рдиреАрдп рдирд┐рдХрд▓рд╛, рд╣рдо рдСрдЯреЛ eth0 рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред рдФрд░ eth1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЕрдЧрд░ рдпрд╣ рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реИ - рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреВрдВрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдЖрдк SNAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ MASQUERADE, рдФрд░ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрдард┐рди рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/network/interfaces
      
      config:
auto lo 
      
        
        
        
      
     iface lo inet loopback 
      
        
        
        
      
     auto eth0 
      
        
        
        
      
     auto eth1 
      
        
        
        
      
     
      
        
        
        
      
     allow-hotplug eth0 eth1 
      
        
        
        
      
     iface eth1 inet dhcp 
      
        
        
        
      
    
      
      рдЗрд╕ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, NAT1 рдиреИрдЯ рдФрд░ рдбреАрдПрдЪрд╕реАрдкреА рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ 1 рд╣реИред
PPPoE рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдВ
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреАрдкреАрдкреАрдУрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, / etc / ppp / pppoe-server-options рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА 2 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/pppoe-server-options
      
      config:
#plugin radius.so 
      
        
        
        
      
     #plugin radattr.so 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/pap-secrets
      
      рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓реЗрдВ:
test * test 10.128.2.10
      
      Pppoe-server рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
/etc/init.d/pppoe-server start
      
      рд╕рд░реНрд╡рд░ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд┐рдпрд╛, рдкреАрдкреАрдкреАрдУрдИ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, PPPoE рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдПрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
      
      рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЦреИрд░, рдЬреИрд╕рд╛ рдерд╛ рд╡реИрд╕рд╛ рд╣реА рд▓реМрдЯрд╛:
iptables -t nat -F
      
      FreeRadius
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/radiusclient/servers
      
      рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
127.0.0.1 my-isp-radius
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/radiusclient/radiusclient.conf
      
      рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
auth_order radius,local 
      
        
        
        
      
     login_tries 4 
      
        
        
        
      
     login_timeout 60 
      
        
        
        
      
     nologin /etc/nologin 
      
        
        
        
      
     issue /etc/radiusclient/issue 
      
        
        
        
      
     # RADIUS settings 
      
        
        
        
      
     authserver localhost:1812 
      
        
        
        
      
     acctserver localhost:1812 
      
        
        
        
      
     servers /etc/radiusclient/servers 
      
        
        
        
      
     dictionary /etc/radiusclient/dictionary 
      
        
        
        
      
     login_radius /usr/sbin/login.radius 
      
        
        
        
      
     # RADIUS server 
      
        
        
        
      
     seqfile /var/run/radius.seq 
      
        
        
        
      
     mapfile /etc/radiusclient/port-id-map 
      
        
        
        
      
     default_realm 
      
        
        
        
      
     radius_timeout 10 
      
        
        
        
      
     radius_retries 3 
      
        
        
        
      
     login_local /bin/login 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/radiusd.conf
      
      рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
prefix = /usr 
      
        
        
        
      
     exec_prefix = /usr 
      
        
        
        
      
     sysconfdir = /etc 
      
        
        
        
      
     localstatedir = /var 
      
        
        
        
      
     sbindir = ${exec_prefix}/sbin 
      
        
        
        
      
     logdir = /var/log/freeradius 
      
        
        
        
      
     raddbdir = /etc/freeradius 
      
        
        
        
      
     radacctdir = ${logdir}/radacct 
      
        
        
        
      
     #     . 
      
        
        
        
      
     confdir = ${raddbdir} 
      
        
        
        
      
     run_dir = ${localstatedir}/run/freeradius 
      
        
        
        
      
     #    . 
      
        
        
        
      
     libdir = ${exec_prefix}/lib 
      
        
        
        
      
     #  pid-.   . 
      
        
        
        
      
     pidfile = ${run_dir}/freeradius.pid 
      
        
        
        
      
     #        FreeRADIUS 
      
        
        
        
      
     user = freerad 
      
        
        
        
      
     group = freerad 
      
        
        
        
      
     #   ( )    . 
      
        
        
        
      
     max_request_time = 30 
      
        
        
        
      
     #       max_request_time 
      
        
        
        
      
     delete_blocked_requests = no 
      
        
        
        
      
     #   ( )   reply   NAS. 
      
        
        
        
      
     cleanup_delay = 5 
      
        
        
        
      
     #     .      
      
        
        
        
      
     #     256. 
      
        
        
        
      
     #        1024. 
      
        
        
        
      
     max_requests = 5120 
      
        
        
        
      
     #   ip .   RADIUS     
      
        
        
        
      
     #    ip . 
      
        
        
        
      
     bind_address = 127.0.0.1 
      
        
        
        
      
     #   FreeRADIUS  port.   , 
      
        
        
        
      
     #     /etc/services 
      
        
        
        
      
     port = 0 
      
        
        
        
      
     # / ip   dns . 
      
        
        
        
      
     #       . 
      
        
        
        
      
     hostname_lookups = no 
      
        
        
        
      
     # /     . 
      
        
        
        
      
     allow_core_dumps = no 
      
        
        
        
      
     #    . 
      
        
        
        
      
     regular_expressions = yes 
      
        
        
        
      
     extended_expressions = yes 
      
        
        
        
      
     #   User-Name     . 
      
        
        
        
      
     log_stripped_names = no 
      
        
        
        
      
     #     . 
      
        
        
        
      
     log_auth = yes 
      
        
        
        
      
     #      . 
      
        
        
        
      
     # log_auth_badpass -    
      
        
        
        
      
     # log_auth_goodpass -   
      
        
        
        
      
     log_auth_badpass = yes 
      
        
        
        
      
     log_auth_goodpass = no 
      
        
        
        
      
     # /  . 
      
        
        
        
      
     usercollide = no 
      
        
        
        
      
     #   /     . 
      
        
        
        
      
     lower_user = no 
      
        
        
        
      
     lower_pass = no 
      
        
        
        
      
     #     / . 
      
        
        
        
      
     nospace_user = no 
      
        
        
        
      
     nospace_pass = no 
      
        
        
        
      
     #     DoS . 
      
        
        
        
      
     security { 
      
        
        
        
      
     #      RADIUS . 
      
        
        
        
      
     max_attributes = 200 
      
        
        
        
      
     #  ( )   Access-Reject . 
      
        
        
        
      
     reject_delay = 1 
      
        
        
        
      
     #     Status-Server 
      
        
        
        
      
     status_server = no 
      
        
        
        
      
     } 
      
        
        
        
      
     #   RADIUS . 
      
        
        
        
      
     #    . 
      
        
        
        
      
     $INCLUDE ${confdir}/clients.conf 
      
        
        
        
      
     #  snmp . 
      
        
        
        
      
     snmp=no 
      
        
        
        
      
     #   . 
      
        
        
        
      
     thread pool { 
      
        
        
        
      
     #    . 
      
        
        
        
      
     start_servers = 5 
      
        
        
        
      
     #    . 
      
        
        
        
      
     max_servers = 32 
      
        
        
        
      
     #    . 
      
        
        
        
      
     min_spare_servers = 3 
      
        
        
        
      
     max_spare_servers = 10 
      
        
        
        
      
     
      
        
        
        
      
     #    .       
      
        
        
        
      
     # RADIUS .   300,     
      
        
        
        
      
     #   . 
      
        
        
        
      
     max_requests_per_server = 0 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #    . 
      
        
        
        
      
     modules { 
      
        
        
        
      
     #  PAP . 
      
        
        
        
      
     #      PAP . 
      
        
        
        
      
     # encryption_scheme      . 
      
        
        
        
      
     # clear -    . 
      
        
        
        
      
     pap { 
      
        
        
        
      
     encryption_scheme = clear 
      
        
        
        
      
     } 
      
        
        
        
      
     #  CHAP . 
      
        
        
        
      
     #      CHAP . 
      
        
        
        
      
     # authtype       Auth-Type=CHAP 
      
        
        
        
      
     chap { 
      
        
        
        
      
     authtype = CHAP 
      
        
        
        
      
     } 
      
        
        
        
      
     #   . 
      
        
        
        
      
     # ..   . 
      
        
        
        
      
     preprocess { 
      
        
        
        
      
     # huntgroups -   .  huntgoups. 
      
        
        
        
      
     # hints - . 
      
        
        
        
      
     huntgroups = ${confdir}/huntgroups 
      
        
        
        
      
     hints = ${confdir}/hints 
      
        
        
        
      
     
      
        
        
        
      
     #  Cisco VSA. 
      
        
        
        
      
     with_cisco_vsa_hack = no 
      
        
        
        
      
     } 
      
        
        
        
      
     #  Microsoft CHAP . 
      
        
        
        
      
     #      Microsoft CHAP v2 
      
        
        
        
      
     # authtype       Auth-Type=MS-CHAP 
      
        
        
        
      
     # use_mppe = no     VPN . 
      
        
        
        
      
     mschap { 
      
        
        
        
      
     authtype = MS-CHAP 
      
        
        
        
      
     use_mppe = no 
      
        
        
        
      
     } 
      
        
        
        
      
     #   Livingston RADIUS . 
      
        
        
        
      
     # usersfile    . 
      
        
        
        
      
     #          . 
      
        
        
        
      
     # acctusersfile     (). 
      
        
        
        
      
     # compat - .     FreeRADIUS  . 
      
        
        
        
      
     files { 
      
        
        
        
      
     usersfile = ${confdir}/users 
      
        
        
        
      
     compat = no 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #     . 
      
        
        
        
      
     detail { 
      
        
        
        
      
     detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d 
      
        
        
        
      
     detailperm = 0600 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #     . 
      
        
        
        
      
     detail auth_log { 
      
        
        
        
      
     detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d 
      
        
        
        
      
     detailperm = 0600 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #    reply . 
      
        
        
        
      
     detail reply_log { 
      
        
        
        
      
     detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d 
      
        
        
        
      
     detailperm = 0600 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #      . 
      
        
        
        
      
     #  NAS   Acct-Session-ID. 
      
        
        
        
      
     # key     Acct-Session-ID 
      
        
        
        
      
     acct_unique { 
      
        
        
        
      
     key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id" 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #       
      
        
        
        
      
     #     cakesql.conf 
      
        
        
        
      
     #$INCLUDE ${confdir}/sql.conf 
      
        
        
        
      
     #$INCLUDE ${confdir}/sql/mysql/counter.conf 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     #  
      
        
        
        
      
     #      preprocess 
      
        
        
        
      
     #    . 
      
        
        
        
      
     #  chap mschap  chap  mschap . 
      
        
        
        
      
     authorize { 
      
        
        
        
      
     preprocess 
      
        
        
        
      
     chap 
      
        
        
        
      
     mschap 
      
        
        
        
      
     #     . 
      
        
        
        
      
     # auth_log 
      
        
        
        
      
     files 
      
        
        
        
      
     #sql 
      
        
        
        
      
     } 
      
        
        
        
      
     #  
      
        
        
        
      
     #    ,  . 
      
        
        
        
      
     authenticate { 
      
        
        
        
      
     Auth-Type PAP { 
      
        
        
        
      
     pap 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     Auth-Type CHAP { 
      
        
        
        
      
     chap 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     Auth-Type MS-CHAP { 
      
        
        
        
      
     mschap 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     } 
      
        
        
        
      
     #   . 
      
        
        
        
      
     preacct { 
      
        
        
        
      
     preprocess 
      
        
        
        
      
     } 
      
        
        
        
      
     #   . 
      
        
        
        
      
     accounting { 
      
        
        
        
      
     #  Acct-Session-Id   NAS      . 
      
        
        
        
      
     acct_unique 
      
        
        
        
      
     #   detail . 
      
        
        
        
      
     detail 
      
        
        
        
      
     #      
      
        
        
        
      
     #sql 
      
        
        
        
      
     } 
      
        
        
        
      
     #    reply-. 
      
        
        
        
      
     post-auth { 
      
        
        
        
      
     #      . 
      
        
        
        
      
     reply_log 
      
        
        
        
      
     } 
      
        
        
        
      
     log { 
      
        
        
        
      
     destination = files 
      
        
        
        
      
     file = ${logdir}/radius.log 
      
        
        
        
      
     syslog_facility = daemon 
      
        
        
        
      
     stripped_names = no 
      
        
        
        
      
     auth = no 
      
        
        
        
      
     auth_badpass = no 
      
        
        
        
      
     auth_goodpass = no 
      
        
        
        
      
     } 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/clients.conf
      
      рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓реЗрдВ:
client localhost { 
      
        
        
        
      
     ipaddr = 127.0.0.1 
      
        
        
        
      
     secret = my-isp-radius 
      
        
        
        
      
     require_message_authenticator = no 
      
        
        
        
      
     nastype = other 
      
        
        
        
      
     } 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/users
      
      config:
steve Cleartext-Password := "testing" 
      
        
        
        
      
     Service-Type = Framed-User, 
      
        
        
        
      
     Framed-Protocol = PPP, 
      
        
        
        
      
     Framed-IP-Address = 10.128.13.3, 
      
        
        
        
      
     Framed-IP-Netmask = 255.255.0.0, 
      
        
        
        
      
     Framed-Routing = Broadcast-Listen, 
      
        
        
        
      
     Framed-Filter-Id = "std.ppp", 
      
        
        
        
      
     Framed-MTU = 1500, 
      
        
        
        
      
     Framed-Compression = Van-Jacobsen-TCP-IP 
      
        
        
        
      
     
      
        
        
        
      
     #        
      
        
        
        
      
     
      
        
        
        
      
     DEFAULT Framed-Protocol == PPP 
      
        
        
        
      
     Framed-Protocol = PPP, 
      
        
        
        
      
     Framed-Compression = Van-Jacobson-TCP-IP 
      
        
        
        
      
     
      
        
        
        
      
     DEFAULT Hint == "CSLIP" 
      
        
        
        
      
     Framed-Protocol = SLIP, 
      
        
        
        
      
     Framed-Compression = Van-Jacobson-TCP-IP 
      
        
        
        
      
     
      
        
        
        
      
     DEFAULT Hint == "SLIP" 
      
        
        
        
      
     Framed-Protocol = SLIP 
      
        
        
        
      
    
      
      рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдкрдХреЛ MySQL рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЖрдкрдХреЛ Freeradius рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
/etc/init.d/freeradius restart
      
      рдЕрдм рдЖрдкрдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЧрддрд┐ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд░реЗрдбрд┐рдпрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ NAT рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВ? рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдХрдИ рдПрдирдПрдПрд╕ рдХреЗ рдмреАрдЪ рд▓реЛрдб рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред
рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ
рддреЛ, рддреИрдпрд╛рд░реАред Wondershaper рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
aptitude install wondershaper
      
      рдпрд╣ рдкреИрдХреЗрдЬ рдПрдХ рдПрдХрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ CBQ / HTB рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рдпрди рдХреЙрд▓ рдкреНрд░рд╛рд░реВрдк рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
wondershaper ppp0 512 512
      
      рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, ppp0 рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдкреАрдб рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ speedtest.net - рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╢реЗрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдЯрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрд░реНрдерд╛рдд, рдХрд┐рдХ), рд╣рдо рдХрд░рддреЗ рд╣реИрдВ
wondershaper clear ppp0
      
      рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ WAN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ "рдмрдбрд╝реЗ рднрд╛рдИ" рд╕реЗ рд▓реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЧрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдЧрддрд┐ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ (рдпрд╛рдиреА, рдЬреЛ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ parser /var/run/radattr.pppr.ppp) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐ рд╕реАрдорд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдлрд▓ рдкреАрдкреАрдкреА рдХрдиреЗрдХреНрд╢рди рдФрд░ рдЗрд╕рдореЗрдВ рд░реЗрдбрд┐рдпрд╕ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреАрдкреАрдкреАрдУрдИ рд╕рд░реНрд╡рд░ рдХреЛ рджреА рдЧрдИ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдлрд╝рд╛рдЗрд▓ / etc / freeradius / рд╢рдмреНрджрдХреЛрд╢ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/dictionary
      
      config:
# Limit session traffic 
      
        
        
        
      
     ATTRIBUTE Session-Octets-Limit 227 integer 
      
        
        
        
      
     # What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out) 
      
        
        
        
      
     ATTRIBUTE Octets-Direction 228 integer 
      
        
        
        
      
     # Connection Speed Limit 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer 
      
        
        
        
      
     ATTRIBUTE Acct-Interim-Interval 85 integer
      
      рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ Raduisclient рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо / рдЖрджрд┐ / рддреНрд░рд┐рдЬреНрдпрд╛ / рд╢рдмреНрджрдХреЛрд╢ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдВрдд рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/radiusclient/dictionary
      
      config:
# Limit session traffic 
      
        
        
        
      
     ATTRIBUTE Session-Octets-Limit 227 integer 
      
        
        
        
      
     # What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out) 
      
        
        
        
      
     ATTRIBUTE Octets-Direction 228 integer 
      
        
        
        
      
     # Connection Speed Limit 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer 
      
        
        
        
      
     ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer 
      
        
        
        
      
     ATTRIBUTE Acct-Interim-Interval 85 integer 
      
        
        
        
      
    
      
      рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдЕрдм рд╡реЗ (рдлреНрд░реАрд░реЗрдбрд┐рдпрд╕ рдФрд░ рд░реЗрдбрд┐рдпрд╕ рдХреНрд▓рд┐рдПрдВрдЯ) рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗред рддрджрдиреБрд╕рд╛рд░, рдлреНрд░реАрд░рд╛рдбрд┐рдпрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рдЖрд╡рдХ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЧрддрд┐ (рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ) рдХреА рд╕реАрдорд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред рдЙрджрд╛рд╣рд░рдг / etc / freeradius / рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/freeradius/users
      
      config:
steve Cleartext-Password := "testing" 
      
        
        
        
      
     Service-Type = Framed-User, 
      
        
        
        
      
     Framed-Protocol = PPP, 
      
        
        
        
      
     Framed-IP-Address = 10.128.13.3, 
      
        
        
        
      
     Framed-IP-Netmask = 255.255.0.0, 
      
        
        
        
      
     Framed-Routing = Broadcast-Listen, 
      
        
        
        
      
     Framed-Filter-Id = "std.ppp", 
      
        
        
        
      
     Framed-MTU = 1500, 
      
        
        
        
      
     Framed-Compression = Van-Jacobsen-TCP-IP 
      
        
        
        
      
     PPPD-Downstream-Speed-Limit = 1024, 
      
        
        
        
      
     PPPD-Upstream-Speed-Limit = 1024 
      
        
        
        
      
     
      
        
        
        
      
     #        
      
        
        
        
      
     
      
        
        
        
      
     DEFAULT Framed-Protocol == PPP 
      
        
        
        
      
     Framed-Protocol = PPP, 
      
        
        
        
      
     Framed-Compression = Van-Jacobson-TCP-IP 
      
        
        
        
      
     
      
        
        
        
      
     DEFAULT Hint == "CSLIP" 
      
        
        
        
      
     Framed-Protocol = SLIP, 
      
        
        
        
      
     Framed-Compression = Van-Jacobson-TCP-IP 
      
        
        
        
      
     
      
        
        
        
      
     DEFAULT Hint == "SLIP" 
      
        
        
        
      
     Framed-Protocol = SLIP
      
      рдЕрдм NAS рдЧрддрд┐ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдкрд╛рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/ip-up.d/0001shaper
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh 
      
        
        
        
      
     /root-scripts/shape-on $1 $5 
      
        
        
        
      
     exit 0
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/ppp/ip-down.d/0001shaper
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh 
      
        
        
        
      
     /root-scripts/shape-off $1 $5 
      
        
        
        
      
     exit 0
      
      рдЬреИрд╕рд╛ рдХрд┐ рдЗрди рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдХрд╛рд░ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХреИрдВрд╕рд┐рд▓ред рдЗрд╕ рдкрд▓ рд╕реЗ - рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред $ 1 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╛рдо рд╣реИ, рдЬреЛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ppp0 рд╣реИ, $ 5 рдлрд╝реНрд░реЗрдо-рдЖрдИрдкреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреАрдкреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ред рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдбрд╛рд▓реЗрдВ:
mkdir /root-scripts 
      
        
        
        
      
     nano /root-scripts/shape-on
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh 
      
        
        
        
      
     if [ -f /var/run/radattr.$1 ] 
      
        
        
        
      
     then 
      
        
        
        
      
     DOWNSPEED=`awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1` 
      
        
        
        
      
     UPSPEED=`awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1` 
      
        
        
        
      
     wondershaper $1 $DOWNSPEED $UPSPEED 
      
        
        
        
      
     fi 
      
        
        
        
      
     iptables -A FORWARD -s $2 -j ACCEPT 
      
        
        
        
      
     iptables -A INPUT -s $2 -j ACCEPT 
      
        
        
        
      
     iptables -t nat -A POSTROUTING -s $2 -o eth1 -j MASQUERADE 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /root-scripts/shape-off
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/sh 
      
        
        
        
      
     iptables -D FORWARD -s $2 -j ACCEPT 
      
        
        
        
      
     iptables -D INPUT -s $2 -j ACCEPT 
      
        
        
        
      
     iptables -t nat -D POSTROUTING -s $2 -o eth1 -j MASQUERADE 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
chmod +x /root-scripts/*
      
      рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, eth1 рдЕрднреА рднреА WAN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ: рдЧреНрд░рд╛рд╣рдХ рдкреАрдкреАрдкреА рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреАрдкреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЖрдХрд╛рд░ рджреЗрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдХрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЬрдм рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╕реНрдХрд╛рд░рд┐рдВрдЧ рдирд┐рдпрдо рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ wondershaper рдХреЛ pppx рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдиреБрдЕрд▓ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдк рд╣реИрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рд░рд▓ iptables рд╕рдВрд░рдХреНрд╖рдг
рдЕрдм рдЖрдЗрдП iptables рдФрд░ рд╕рд░реНрд╡рд░ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджреЗрдВред рдмрджрд▓реЗрдВ /etc/firewall.conf:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/firewall.conf
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/bash 
      
        
        
        
      
     
      
        
        
        
      
     #reset all 
      
        
        
        
      
     iptables -F 
      
        
        
        
      
     iptables -Z 
      
        
        
        
      
     iptables -t nat -F 
      
        
        
        
      
     iptables -t nat -Z 
      
        
        
        
      
     
      
        
        
        
      
     #iface config 
      
        
        
        
      
     INET_IFACE="eth1" 
      
        
        
        
      
     LO_IFACE="lo" 
      
        
        
        
      
     LO_IP="127.0.0.1" 
      
        
        
        
      
     
      
        
        
        
      
     #kernel modules 
      
        
        
        
      
     modprobe ip_tables 
      
        
        
        
      
     modprobe ip_conntrack 
      
        
        
        
      
     modprobe iptable_filter 
      
        
        
        
      
     modprobe iptable_mangle 
      
        
        
        
      
     modprobe iptable_nat 
      
        
        
        
      
     modprobe ipt_LOG 
      
        
        
        
      
     modprobe ipt_limit 
      
        
        
        
      
     modprobe ipt_state 
      
        
        
        
      
     modprobe ipt_MASQUERADE 
      
        
        
        
      
     modprobe ip_conntrack_ftp 
      
        
        
        
      
     modprobe ip_conntrack_irc 
      
        
        
        
      
     modprobe ip_nat_ftp 
      
        
        
        
      
     modprobe ip_nat_irc 
      
        
        
        
      
     
      
        
        
        
      
     #default policy 
      
        
        
        
      
     iptables -P INPUT DROP 
      
        
        
        
      
     iptables -P OUTPUT DROP 
      
        
        
        
      
     iptables -P FORWARD DROP 
      
        
        
        
      
     
      
        
        
        
      
     #user chains 
      
        
        
        
      
     iptables -N bad_tcp_packets 
      
        
        
        
      
     iptables -N allowed 
      
        
        
        
      
     iptables -N tcp_packets 
      
        
        
        
      
     iptables -N udp_packets 
      
        
        
        
      
     iptables -N icmp_packets 
      
        
        
        
      
     iptables -N blocksshd 
      
        
        
        
      
     blocksshd --start 
      
        
        
        
      
     
      
        
        
        
      
     ###bad_tcp_packets chain 
      
        
        
        
      
     iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 
      
        
        
        
      
     #iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:" 
      
        
        
        
      
     iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP 
      
        
        
        
      
     
      
        
        
        
      
     ###allowed chain 
      
        
        
        
      
     iptables -A allowed -p TCP --syn -j ACCEPT 
      
        
        
        
      
     iptables -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT 
      
        
        
        
      
     iptables -A allowed -p TCP -j DROP 
      
        
        
        
      
     
      
        
        
        
      
     ###tcp_packets chain 
      
        
        
        
      
     iptables -A tcp_packets -p TCP -s 0/0 --dport 22 -j blocksshd 
      
        
        
        
      
     iptables -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed 
      
        
        
        
      
     iptables -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed 
      
        
        
        
      
     #iptables -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed 
      
        
        
        
      
     
      
        
        
        
      
     ###udp_packets chain 
      
        
        
        
      
     iptables -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT 
      
        
        
        
      
     
      
        
        
        
      
     ###icmp chain 
      
        
        
        
      
     iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT 
      
        
        
        
      
     iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT 
      
        
        
        
      
     
      
        
        
        
      
     ###input chain 
      
        
        
        
      
     iptables -A INPUT -p TCP -j bad_tcp_packets 
      
        
        
        
      
     iptables -A INPUT -p ALL -i $LO_IFACE -j ACCEPT 
      
        
        
        
      
     iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT 
      
        
        
        
      
     iptables -A INPUT -p TCP -i $INET_IFACE -j tcp_packets 
      
        
        
        
      
     iptables -A INPUT -p UDP -i $INET_IFACE -j udp_packets 
      
        
        
        
      
     iptables -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets 
      
        
        
        
      
     #iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: " 
      
        
        
        
      
     
      
        
        
        
      
     ###forward chain 
      
        
        
        
      
     iptables -A FORWARD -p tcp -j bad_tcp_packets 
      
        
        
        
      
     #custom rules 
      
        
        
        
      
     #iptables -A FORWARD -s 10.128.0.10/32 -d 192.168.1.1/32 -p tcp -j ACCEPT 
      
        
        
        
      
     iptables -A FORWARD -s 10.128.0.0/16 -d 192.168.1.1/32 -p tcp -j DROP 
      
        
        
        
      
     #/custom rules 
      
        
        
        
      
     iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
      
        
        
        
      
     #iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: " 
      
        
        
        
      
     
      
        
        
        
      
     ###OUTPUT chain 
      
        
        
        
      
     iptables -A OUTPUT -p tcp -j bad_tcp_packets 
      
        
        
        
      
     iptables -A OUTPUT -p ALL -j ACCEPT 
      
        
        
        
      
     #iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: " 
      
        
        
        
      
     
      
        
        
        
      
     ###mangle 
      
        
        
        
      
     iptables -t mangle -A POSTROUTING -o $INET_IFACE -j TTL --ttl-set 64 
      
        
        
        
      
    
      
      рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирд┐рдпрдоред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ рдпрд╛ рдмрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ: рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЧреЗрдЯрд╡реЗ ADSL рдореЙрдбреЗрдо рдпрд╛ рд╡реЗрдм рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╡рд╣рд╛рдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдХреА рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реБрд░рдВрдЧреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдЕрдЧрд▓рд╛ред рдРрд╕реЗ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдмреНрд░реВрдЯ-рдмрд▓ SSH рд╕рд░реНрд╡рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмреНрд▓реЙрдХрд╢реЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
BlockSSHd
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ blockshd.sourceforge.net рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд╣реАрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП wget рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкрде - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ - SourceForge рдкреГрд╖реНрда рд╕реЗ рдХрд╛рдЯрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕рдмрд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛:
 cd /tmp 
      
        
        
        
      
     wget downloads.sourceforge.net/project/blocksshd/blocksshd/BlockSSHD%201.3/blocksshd-1.3.tar.gz?use_mirror=kent 
      
        
        
        
      
    
      
      рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реНрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ, рдЪрд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:
cpan 
      
        
        
        
      
     upgrade 
      
        
        
        
      
     install Sys::Syslog 
      
        
        
        
      
     install Sys::Hostname 
      
        
        
        
      
     install File::Tail 
      
        
        
        
      
     install Tie::File 
      
        
        
        
      
     install Net::DNS 
      
        
        
        
      
     install Net::Subnets 
      
        
        
        
      
     install Getopt::Long 
      
        
        
        
      
     exit 
      
        
        
        
      
    
      
      рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдм рдПрдХ рдЭрдкрдЯреНрдЯрд╛ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдкреВрд░реА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, Cpan рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдЧрд╛ред рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ Enter рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА, рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдмреНрд▓реЙрдХрд╢реЗрдб рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
cd /tmp 
      
        
        
        
      
     tar -xvzf ./blocksshd-1.3.tar.gz 
      
        
        
        
      
     cd blocksshd-1.3 
      
        
        
        
      
     make install 
      
        
        
        
      
    
      
      рдЦреИрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдореИрдиреБрдЕрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп рд╕рдВрд╕реНрдХрд░рдг рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдерд╛, рдпрд╛ рд╢рд╛рдпрдж рдХреЛрдИ рднреА, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдХреЙрдкреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмреНрд▓реЙрдХрд╢реЗрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /etc/blocksshd.conf
      
      config:
$cfg = { 
      
        
        
        
      
     os => 'linux', # Target OS - either linux or bsd 
      
        
        
        
      
     chain => 'blocksshd', # Name of iptables or pf chain 
      
        
        
        
      
     logfile => '/var/log/secure', # Log file to monitor 
      
        
        
        
      
     logcheck => '10', # How often to check the log file 
      
        
        
        
      
     max_attempts => '4', # Max number of failures 
      
        
        
        
      
     timeout => '360', # Reset IP count if no activity after time out in seconds 
      
        
        
        
      
     unblock => '1', # Enable unblocking 
      
        
        
        
      
     unblock_timeout => '43200', # Time in seconds after which to unblock a blocked IP address 
      
        
        
        
      
     restore_blocked => '0', # Turn on checking for previously blocked IPs 
      
        
        
        
      
     log_ips => '/etc/blocksshd.list', # Log file for blocked IPs 
      
        
        
        
      
     pid_file => '/var/run/blocksshd.pid', # Location of PID file 
      
        
        
        
      
     send_email => '0', # Enable the sending of email notifications 
      
        
        
        
      
     email => 'root', # Email address to send notifications 
      
        
        
        
      
     mail => '/bin/mail', # Location of mail binary 
      
        
        
        
      
     email_whois_lookup => '1', # enable whois lookup of the blocked ip addres in the sent email 
      
        
        
        
      
     whois => '/usr/bin/whois', # location of the whois binary 
      
        
        
        
      
     sed => '/bin/sed', # location of the sed binary 
      
        
        
        
      
     iptables => '/sbin/iptables', # Location of iptables binary - only for Linux 
      
        
        
        
      
     pfctl => '/sbin/pfctl', # Location of pfctl binary - only for BSD 
      
        
        
        
      
     whitelist => [qw{ 
      
        
        
        
      
     127.0.0.1/32 
      
        
        
        
      
     }], # whitelist - list of IPs that will never be blocked - IPs must be specified in the form ad$ 
      
        
        
        
      
     }; 
      
        
        
        
      
     
      
        
        
        
      
     #leave 1; here! 
      
        
        
        
      
     1; 
      
        
        
        
      
    
      
      рдЗрд╕ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, рдЖрдкрдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдкрддреЗ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдкреНрд░рдпрд╛рд╕ рд╣реИ, рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрдИрдкреА рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреМрдерд╛ - рд╣реИрдХрд┐рдВрдЧ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЕрдм рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред
рд╕рд░рд▓рддрдо рдирд┐рдЧрд░рд╛рдиреА
рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк "рдШреБрдЯрдиреЗ рдкрд░" рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд░рд▓ рд▓реЙрдиреНрдЪ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд╕рд┐рдорд▓рд┐рдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
nano /root-scripts/clients
      
      рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/usr/bin/php 
      
        
        
        
      
     <? 
      
        
        
        
      
     function time_since($original) { 
      
        
        
        
      
     $chunks = array( 
      
        
        
        
      
     array(60 * 60 * 24 , 'D '), 
      
        
        
        
      
     array(60 * 60 , 'h:'), 
      
        
        
        
      
     array(60 , 'min'), 
      
        
        
        
      
     ); 
      
        
        
        
      
     $today = time(); 
      
        
        
        
      
     $since = $today - $original; 
      
        
        
        
      
     for ($i = 0, $j = count($chunks); $i < $j; $i++) { 
      
        
        
        
      
     $seconds = $chunks[$i][0]; 
      
        
        
        
      
     $name = $chunks[$i][1]; 
      
        
        
        
      
     if (($count = floor($since / $seconds)) != 0) { 
      
        
        
        
      
     break; 
      
        
        
        
      
     } 
      
        
        
        
      
     } 
      
        
        
        
      
     $print = "$count{$name}"; 
      
        
        
        
      
     if ($i + 1 < $j) { 
      
        
        
        
      
     $seconds2 = $chunks[$i + 1][0]; 
      
        
        
        
      
     $name2 = $chunks[$i + 1][1]; 
      
        
        
        
      
     if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) { 
      
        
        
        
      
     $print .= "$count2{$name2}"; 
      
        
        
        
      
     } 
      
        
        
        
      
     } 
      
        
        
        
      
     return $print; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function execShellCmdRaw($cmd) { 
      
        
        
        
      
     ob_start(); 
      
        
        
        
      
     passthru($cmd); 
      
        
        
        
      
     $buffer = ob_get_contents(); 
      
        
        
        
      
     ob_end_clean(); 
      
        
        
        
      
     return $buffer; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function rawToArray($buffer) { 
      
        
        
        
      
     return empty($buffer)?array():preg_split('/[\r\n]+/', $buffer, -1, PREG_SPLIT_NO_EMPTY); 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function execShellCmd($cmd) { 
      
        
        
        
      
     return rawToArray(execShellCmdRaw($cmd)); 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function getNATSources() { 
      
        
        
        
      
     $nat = execShellCmd('iptables -t nat -L | grep MASQUERADE'); 
      
        
        
        
      
     $nats = array(); 
      
        
        
        
      
     foreach ($nat as $s) { 
      
        
        
        
      
     $pos_start = strpos($s, '--') + 2; 
      
        
        
        
      
     $pos_end = strpos($s, 'anywhere'); 
      
        
        
        
      
     $n = trim(substr($s, $pos_start, $pos_end - $pos_start)); 
      
        
        
        
      
     $nats[$n] = $n; 
      
        
        
        
      
     } 
      
        
        
        
      
     return $nats; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function getTunnelMacAddr($pid) { 
      
        
        
        
      
     $pppdc = execShellCmd('ps -p '.$pid.' -f | grep pppd'); 
      
        
        
        
      
     $pppdc = $pppdc[0]; 
      
        
        
        
      
     $pos_start = strpos($pppdc, '-e ') + 3; 
      
        
        
        
      
     $pos_end = strpos($pppdc, '-S \'\''); 
      
        
        
        
      
     return trim(substr($pppdc, $pos_start, $pos_end - $pos_start)); 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function getPPPTunnels() { 
      
        
        
        
      
     $ifc = execShellCmd('ifconfig -a'); 
      
        
        
        
      
     $tunnels = array(); 
      
        
        
        
      
     $nat = getNATSources(); 
      
        
        
        
      
     foreach ($ifc as $i => $s) { 
      
        
        
        
      
     if (substr($s, 0, 3) == 'ppp') { 
      
        
        
        
      
     $ppp = array(); 
      
        
        
        
      
     $ppp['interface'] = substr($s, 0, 4); 
      
        
        
        
      
     $ppp['framed_ip'] = trim(substr($ifc[$i+1], strpos($ifc[$i+1], 'PtP:') + 6, 12)); 
      
        
        
        
      
     $RXpos_start = strpos($ifc[$i+6], '(') + 1; 
      
        
        
        
      
     $RXpos_end = strpos($ifc[$i+6], ')'); 
      
        
        
        
      
     $ppp['tx'] = substr($ifc[$i+6], $RXpos_start, $RXpos_end - $RXpos_start); //TX(user) = RX(server) 
      
        
        
        
      
     $tx_sub = substr($ifc[$i+6], $RXpos_end + 1); 
      
        
        
        
      
     $TXpos_start = strpos($tx_sub, '(') + 1; 
      
        
        
        
      
     $TXpos_end = strpos($tx_sub, ')'); 
      
        
        
        
      
     $ppp['rx'] = substr($tx_sub, $TXpos_start, $TXpos_end - $TXpos_start); 
      
        
        
        
      
     $ppp['nat'] = array_key_exists($ppp['framed_ip'], $nat)?'on':'off'; 
      
        
        
        
      
     $pidf = '/var/run/'.$ppp['interface'].'.pid'; 
      
        
        
        
      
     if (file_exists($pidf)) { 
      
        
        
        
      
     $ppp['uptime'] = time_since(filemtime($pidf)); 
      
        
        
        
      
     $ppp['pid'] = trim(file_get_contents($pidf)); 
      
        
        
        
      
     $ppp['mac_addr'] = getTunnelMacAddr($ppp['pid']); 
      
        
        
        
      
     $ppp['username'] = 'detectedusername'; 
      
        
        
        
      
     $tunnels[] = $ppp; 
      
        
        
        
      
     } 
      
        
        
        
      
     } 
      
        
        
        
      
     } 
      
        
        
        
      
     return $tunnels; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function clientTable($tunnels) { 
      
        
        
        
      
     printf("\n"); 
      
        
        
        
      
     printf(" %15s | ","IP Address"); 
      
        
        
        
      
     printf("%20s | ","MAC Address "); 
      
        
        
        
      
     printf("%3s | ","NAT"); 
      
        
        
        
      
     printf("%16s | ","User name "); 
      
        
        
        
      
     printf("%9s | ","TX (up)"); 
      
        
        
        
      
     printf("%9s | ","RX (down)"); 
      
        
        
        
      
     printf("%11s","Uptime "); 
      
        
        
        
      
     printf("\n "); 
      
        
        
        
      
     for ($i = 0; $i < 101; $i++) printf("-"); 
      
        
        
        
      
     printf("\n"); 
      
        
        
        
      
     foreach($tunnels as $tun) { 
      
        
        
        
      
     printf(" %15s | ",$tun['framed_ip']); 
      
        
        
        
      
     printf("%20s | ",$tun['mac_addr']); 
      
        
        
        
      
     printf("%3s | ",$tun['nat']); 
      
        
        
        
      
     printf("%16s | ",$tun['username']); 
      
        
        
        
      
     printf("%9s | ",$tun['tx']); 
      
        
        
        
      
     printf("%9s | ",$tun['rx']); 
      
        
        
        
      
     printf("%11s",$tun['uptime']); 
      
        
        
        
      
     printf("\n"); 
      
        
        
        
      
     } 
      
        
        
        
      
     printf("\n"); 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     function addRadParams(&$tunnels = NULL) { 
      
        
        
        
      
     $radusers = rawToArray(file_get_contents('/etc/freeradius/users')); 
      
        
        
        
      
     $users = array(); 
      
        
        
        
      
     foreach ($radusers as $i => $s) { 
      
        
        
        
      
     if (strpos($s, 'Cleartext-Password') !== FALSE) { 
      
        
        
        
      
     $user = array(); 
      
        
        
        
      
     $user['username'] = trim(substr($s, 0, strpos($s, 'Cleartext-Password'))); 
      
        
        
        
      
     $si = $i + 1; 
      
        
        
        
      
     while (strpos($radusers[$si], 'Framed-IP-Address') == FALSE) $si++; 
      
        
        
        
      
     $ip_raw = explode('=', $radusers[$si]); 
      
        
        
        
      
     $ip_raw = $ip_raw[1]; 
      
        
        
        
      
     $users[trim($ip_raw, ' ,')] = $user; 
      
        
        
        
      
     } 
      
        
        
        
      
     } 
      
        
        
        
      
     foreach ($tunnels as $i => $tun) { 
      
        
        
        
      
     $tunnels[$i]['username'] = $users[$tun['framed_ip']]['username']; 
      
        
        
        
      
     } 
      
        
        
        
      
     return $tunnels; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     $t = getPPPTunnels(); 
      
        
        
        
      
     addRadParams($t); 
      
        
        
        
      
     clientTable($t); 
      
        
        
        
      
    
      
      рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
chmod +x /root-scripts/clients 
      
        
        
        
      
     ln -s /root-scripts/clients /usr/bin/clients 
      
        
        
        
      
     clients 
      
        
        
        
      
    
      
      рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:
IP Address | MAC Address | NAT | User name | TX (up) | RX (down) | Uptime 
      
        
        
        
      
     ----------------------------------------------------------------------------------------------------- 
      
        
        
        
      
     10.128.1.7 | 1:00:19:66:df:39:26 | on | room56 | 507.4 MiB | 445.5 MiB | 16h:31min 
      
        
        
        
      
     10.128.1.3 | 23:00:13:8f:70:30:03 | on | room47 | 8.2 MiB | 137.8 MiB | 1h:14min 
      
        
        
        
      
     10.128.1.5 | 3:00:a1:b0:11:74:cf | on | room50 | 19.2 MiB | 500.2 MiB | 16h:30min 
      
        
        
        
      
    
      
      рдпрд╣ рд╕рдм, рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ 1 рдЬреАрдмреА рдбреАрдбреАрдЖрд░ 1 рдФрд░ 2 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд┐рд╕реНрдЯрдо рдпреВрдирд┐рдЯ 30 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП 16-рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдЪреИрдирд▓ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдореБрдЭреЗ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд┐рд╕реА рднреА рдиреЛрдЯрд┐рдХ рд▓реЛрдб рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!