Linux下shell小数运算的笔记

 

首先,linux shell下默认变量的计算小数都省略掉了,也就是0.99999其实就是0,这个很不好,有时候我们需要统计小数的。

好了,用echo + bc的组合可以实现。

  1. echo "scale=4; $BYTES_SENT/1024/1024"|bc 

scale可以设置小数点后保留4位。

但是问题又出来了,如果是0.9999则显示的是.9999,小数点前面的0又不显示了,bc也是够了逗比了,好吧,继续折腾。

  1. echo "scale=4; $BYTES_SENT/1024/1024"|bc|awk '{printf "%.4f", $0}' 

这样子下来,用awk再来格式化下,只怪奶牛shell学得很渣,但是很多东西查到了还是很好学习的,记录下。

autoproxy改版for firefox下载

 

autoproxy在firefox新版本中很多无法使用订阅功能,用这个改版还是比较好的选择。

下载地址:http://www.400gb.com/file/114503453

使用方法:下载后直接拖动文件到firefox的地址栏即可安装。

Nginx为网站目录设置密码保护

 

在Nginx的nginx.conf里面有如下的字段

  1. server
  2.     {
  3.         listen 80 default_server;
  4.         #listen [::]:80 default_server ipv6only=on;
  5.         server_name www.nenew.net;
  6.         index index.html index.htm index.php;
  7.         root  /home/wwwroot/default;
  8.         #error_page   404   /404.html;
  9.         include enable-php.conf;
  10.         location /nginx_status
  11.         {
  12.             stub_status on;
  13.             access_log   off;
  14.         }
  15.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  16.         {
  17.             expires      30d;
  18.         }
  19.         location ~ .*\.(js|css)?$
  20.         {
  21.             expires      12h;
  22.         }
  23.         location ~ /\.
  24.         {
  25.             deny all;
  26.         }
  27.         access_log  /home/wwwlogs/access.log  access;
  28.     }
  29. include vhost/*.conf;
  30. }

如果我们想在默认的目录添加密码保护,只保护对目录的访问,也就是登陆这个目录就会输入密码,则我们这样设置

  1. server
  2.     {
  3.         listen 80 default_server;
  4.         #listen [::]:80 default_server ipv6only=on;
  5.         server_name www.nenew.net;
  6.         index index.html index.htm index.php;
  7.         root  /home/wwwroot/default;
  8.         #error_page   404   /404.html;
  9.         include enable-php.conf;
  10.         location /nginx_status
  11.         {
  12.             stub_status on;
  13.             access_log   off;
  14.         }
  15.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  16.         {
  17.             expires      30d;
  18.         }
  19.         location ~ .*\.(js|css)?$
  20.         {
  21.             expires      12h;
  22.         }
  23.         location ~ /\.
  24.         {
  25.             deny all;
  26.         }
  27.         location / 
  28.         {        
  29.   auth_basic “Restricted”;
  30. auth_basic_user_file pass_file;
  31. }
  32.         access_log  /home/wwwlogs/access.log  access;
  33.     }
  34. include vhost/*.conf;
  35. }

其中pass_file是密码文件的绝对路径,密码文件是由用户名和函数 crypt加密的密码组成,可以使htpasswd -c -d pass_file username 来生成。

Ubuntu下shadowsocks多用户后端manyuser+前端sspanel搭建教程

 

好吧,很多东西还是有个前端管理起来比较方便,奶牛今天也配了个,写下过程记录下。

安装shadowsocks支持

  1. apt-get install python-pip python-m2crypto
  2. pip install cymysql

安装LNMP

  1. wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp

后端安装配置

  1. git clone -b manyuser https://github.com/mengskysama/shadowsocks.git 
  2. cd ./shadowsocks/shadowsocks 
  3. vim Config.py 
  4.     #Config 
  5.     MYSQL_HOST = 'localhost' #这一行是服务器IP,127.0.0.1表示本机 
  6.     MYSQL_PORT = 3306 #数据库端口号 
  7.     MYSQL_USER = 'nenew' #数据库用户名 
  8.     MYSQL_PASS = 'nenew' #数据库密码 
  9.     MYSQL_DB = 'shadowsocks' #数据库名称 
  10.  
  11.     MANAGE_PASS = 'ss233333333' 
  12.     #if you want manage in other server you should set this value to global ip 
  13.     MANAGE_BIND_IP = '127.0.0.1' 
  14.     #make sure this port is idle 
  15.     MANAGE_PORT = 23333 
  16.  
  17. python server.py 

在mysql数据库中新建数据库shadowsocks,并添加用户nenew,导入manyuser中的sql文件,然后执行python server.py。如果没有异常,则表示已经安装成功后端。

前端安装:

  1. lnmp vhost add 

添加虚拟主机,然后进入虚拟主机目录

  1. wget https://github.com/orvice/ss-panel/archive/master.zip 
  2. unzip master.zip 
  3. rm master.zip 
  4. mv -f ss-panel-master/* ./ 
  5. mv lib/config-simple.php lib/config.php 
  6. vim lib/config.php 

编辑配置信息,然后将lib文件夹下的sql文件都导入到nenew数据库中。

添加守护进程supervisor:

  1. apt-get install supervisor 
  2. echo_supervisord_conf > /etc/supervisor/supervisord.conf 
  3. vim /etc/supervisor/supervisord.conf 

将文件最后添加

  1. [program:shadowsocks] 
  2. command=python /root/shadowsocks/shadowsocks/server.py -c /root/shadowsocks/shadowsocks/config.json 
  3. autorestart=true 
  4. user=root 

其中的目录自己根据实际情况设置,重启即可。

前端github:https://github.com/orvice/ss-panel

后端github:https://github.com/mengskysama/shadowsocks

顺带广告,ss服务器150元每年,需要者联系,联系方式见杂货铺。

PPTP VPN之日志功能实现【记录登陆用户、登陆时间、登陆IP、在线时间、流量统计等信息】

 

其实以前也搞过PPTP VPN的配置,但是当时都是存在于建立,很多细节的方面并没有做好。今天来搞下这个日志系统吧,主要实现是通过ip-up 和ip-down两个脚本来实现的。这里说下原理吧,原理是通过pptp建立连接的时候都会执行ip-up,然后断线会执行ip-down。首先看看man pppd里面的一些内容:

  1. SCRIPTS 
  2.        Pppd  invokes  scripts at various stages in its processing which can be 
  3.        used to perform site-specific ancillary processing.  These scripts  are 
  4.        usually  shell  scripts,  but  could  be executable code files instead. 
  5.        Pppd does not wait for the scripts to finish (except for the  ip-pre-up 
  6.        script).  The scripts are executed as root (with the real and effective 
  7.        user-id set to 0), so that they can do things such  as  update  routing 
  8.        tables  or  run  privileged  daemons.   Be careful that the contents of 
  9.        these scripts do not compromise your system's security.  Pppd runs  the 
  10.        scripts  with standard input, output and error redirected to /dev/null, 
  11.        and with an environment that is empty except for some environment vari- 
  12.        ables  that give information about the link.  The environment variables 
  13.        that pppd sets are: 
  14.  
  15.        DEVICE The name of the serial tty device being used. 
  16.  
  17.        IFNAME The name of the network interface being used. 
  18.  
  19.        IPLOCAL 
  20.               The IP address for the local end of the link.  This is only  set 
  21.               when IPCP has come up. 
  22.  
  23.        IPREMOTE 
  24.               The IP address for the remote end of the link.  This is only set 
  25.               when IPCP has come up. 
  26.  
  27.        PEERNAME 
  28.               The authenticated name of the peer.  This is  only  set  if  the 
  29.               peer authenticates itself. 
  30.  
  31.        SPEED  The baud rate of the tty device. 
  32.  
  33.        ORIG_UID 
  34.               The real user-id of the user who invoked pppd. 
  35.  
  36.        PPPLOGNAME 
  37.               The  username  of  the  real  user-id that invoked pppd. This is 
  38.               always set. 
  39.  
  40.        For the ip-down and auth-down scripts, pppd  also  sets  the  following 
  41.        variables giving statistics for the connection: 
  42.  
  43.        CONNECT_TIME 
  44.               The  number  of  seconds  from  when the PPP negotiation started 
  45.               until the connection was terminated. 
  46.  
  47.        BYTES_SENT 
  48.               The number of bytes sent (at the level of the serial port)  dur- 
  49.               ing the connection. 
  50.  
  51.        BYTES_RCVD 
  52.               The  number  of bytes received (at the level of the serial port) 
  53.               during the connection. 
  54.  
  55.        LINKNAME 
  56.               The logical name of the link, set with the linkname option. 
  57.  
  58.        CALL_FILE 
  59.               The value of the call option. 
  60.  
  61.        DNS1   If the peer supplies DNS server addresses, this variable is  set 
  62.               to the first DNS server address supplied. 
  63.  
  64.        DNS2   If  the peer supplies DNS server addresses, this variable is set 
  65.               to the second DNS server address supplied. 
  66.  
  67.        Pppd invokes the following scripts, if they exist.  It is not an  error 
  68.        if they don't exist. 
  69.  
  70.        /etc/ppp/auth-up 
  71.               A  program  or  script which is executed after the remote system 
  72.               successfully authenticates itself.   It  is  executed  with  the 
  73.               parameters 
  74.  
  75.               interface-name peer-name user-name tty-device speed 
  76.  
  77.               Note  that  this  script  is  not  executed  if the peer doesn't 
  78.               authenticate itself, for example when the noauth option is used. 
  79.  
  80.        /etc/ppp/auth-down 
  81.               A program or script which is executed when the link  goes  down, 
  82.               if  /etc/ppp/auth-up was previously executed.  It is executed in 
  83.               the same manner with the same parameters as /etc/ppp/auth-up. 
  84.  
  85.        /etc/ppp/ip-pre-up 
  86.               A program or script which is executed just before the  ppp  net- 
  87.               work  interface  is  brought  up.   It is executed with the same 
  88.               parameters as the ip-up  script  (below).   At  this  point  the 
  89.               interface  exists  and  has  IP  addresses assigned but is still 
  90.               down.  This can be used to add  firewall  rules  before  any  IP 
  91.               traffic can pass through the interface.  Pppd will wait for this 
  92.               script to finish before  bringing  the  interface  up,  so  this 
  93.               script should run quickly. 
  94.  
  95.        /etc/ppp/ip-up 
  96.               A program or script which is executed when the link is available 
  97.               for sending and receiving IP packets (that  is,  IPCP  has  come 
  98.               up).  It is executed with the parameters 
  99.  
  100.               interface-name       tty-device      speed      local-IP-address 
  101.               remote-IP-address ipparam 
  102.  
  103.        /etc/ppp/ip-down 
  104.               A program or script which is executed when the link is no longer 
  105.               available for sending and receiving IP packets.  This script can 
  106.               be used for  undoing  the  effects  of  the  /etc/ppp/ip-up  and 
  107.               /etc/ppp/ip-pre-up  scripts.   It  is invoked in the same manner 
  108.               and with the same parameters as the ip-up script. 
  109.  
  110.        /etc/ppp/ipv6-up 
  111.               Like /etc/ppp/ip-up, except that it is executed when the link is 
  112.               available for sending and receiving IPv6 packets. It is executed 
  113.               with the parameters 
  114.  
  115.               interface-name   tty-device    speed    local-link-local-address 
  116.               remote-link-local-address ipparam 
  117.  
  118.        /etc/ppp/ipv6-down 
  119.               Similar  to /etc/ppp/ip-down, but it is executed when IPv6 pack- 
  120.               ets can no longer be transmitted on the  link.  It  is  executed 
  121.               with the same parameters as the ipv6-up script. 
  122.  
  123.        /etc/ppp/ipx-up 
  124.               A program or script which is executed when the link is available 
  125.               for sending and receiving IPX packets (that is, IPXCP  has  come 
  126.               up).  It is executed with the parameters 
  127.  
  128.               interface-name       tty-device       speed       network-number 
  129.               local-IPX-node-address  remote-IPX-node-address  local-IPX-rout- 
  130.               ing-protocol  remote-IPX-routing-protocol  local-IPX-router-name 
  131.               remote-IPX-router-name ipparam pppd-pid 
  132.  
  133.               The local-IPX-routing-protocol  and  remote-IPX-routing-protocol 
  134.               field may be one of the following: 
  135.  
  136.               NONE      to indicate that there is no routing protocol 
  137.               RIP       to indicate that RIP/SAP should be used 
  138.               NLSP      to indicate that Novell NLSP should be used 
  139.               RIP NLSP  to indicate that both RIP/SAP and NLSP should be used 
  140.  
  141.        /etc/ppp/ipx-down 
  142.               A program or script which is executed when the link is no longer 
  143.               available for sending and receiving IPX  packets.   This  script 
  144.               can  be  used  for  undoing  the  effects of the /etc/ppp/ipx-up 
  145.               script.  It is invoked in the same  manner  and  with  the  same 
  146.               parameters as the ipx-up script. 

这就是ppp的脚本内容,里面当然有变量咯,这些变量就是我们需要的。

好了,那么开始进行日志整理吧,首先是ip-up

  1. vim /etc/ppp/ip-up 
  2. #!/bin/sh 
  3. # This script is run by the pppd after the link is established. 
  4. # It uses run-parts to run scripts in /etc/ppp/ip-up.d, so to add routes, 
  5. # set IP address, run the mailq etc. you should create script(s) there. 
  6. # Be aware that other packages may include /etc/ppp/ip-up.d scripts (named 
  7. # after that package), so choose local script names with that in mind. 
  8. # This script is called with the following arguments: 
  9. #    Arg  Name                          Example 
  10. #    $1   Interface name                ppp0 
  11. #    $2   The tty                       ttyS1 
  12. #    $3   The link speed                38400 
  13. #    $4   Local IP number               12.34.56.78 
  14. #    $5   Peer  IP number               12.34.56.99 
  15. #    $6   Optional ``ipparam'' value    foo 
  16.  
  17. # The  environment is cleared before executing this script 
  18. # so the path must be reset 
  19. PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin 
  20. export PATH 
  21.  
  22. # These variables are for the use of the scripts run by run-parts 
  23. PPP_IFACE="$1" 
  24. PPP_TTY="$2" 
  25. PPP_SPEED="$3" 
  26. PPP_LOCAL="$4" 
  27. PPP_REMOTE="$5" 
  28. PPP_IPPARAM="$6" 
  29. export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM 
  30.  
  31. # as an additional convenience, $PPP_TTYNAME is set to the tty name, 
  32. # stripped of /dev/ (if present) for easier matching. 
  33. PPP_TTYNAME=`/usr/bin/basename "$2"` 
  34. export PPP_TTYNAME 
  35.  
  36. # If /var/log/ppp-ipupdown.log exists use it for logging. 
  37. if [ -e /var/log/ppp-ipupdown.log ]; then 
  38.   exec > /var/log/ppp-ipupdown.log 2>&1 
  39.   echo $0 $@ 
  40.   echo 
  41. fi 
  42.  
  43. # This script can be used to override the .d files supplied by other packages. 
  44. if [ -x /etc/ppp/ip-up.local ]; then 
  45.   exec /etc/ppp/ip-up.local "$@" 
  46. fi 
  47.  
  48. run-parts /etc/ppp/ip-up.d \ 
  49.   --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6" 
  50.  
  51. # if pon was called with the "quick" argument, stop pppd 
  52. if [ -e /var/run/ppp-quick ]; then 
  53.   rm /var/run/ppp-quick 
  54.   wait 
  55.   kill $PPPD_PID 
  56. fi 
  57.  
  58. /sbin/iptables -t nat -A POSTROUTING -s  172.16.36.0/24 -j SNAT --to-source "serverip" 这里设置每次登陆时候都设定一次路由转发,避免失效。 
  59.  
  60. echo "****************************************************" > /var/log/pptpd-${1}.log 将所有内容导入到pptpd-${1}.log,以防多用户登陆时候造成日志混乱 
  61. echo "username: $PEERNAME" >> /var/log/pptpd-${1}.log 
  62. echo "clientIP: $6" >> /var/log/pptpd-${1}.log 
  63. echo "device: $1" >> /var/log/pptpd-${1}.log 
  64. echo "vpnIP: $4" >> /var/log/pptpd-${1}.log 
  65. echo "assignIP: $5" >> /var/log/pptpd-${1}.log 
  66. echo "logintime: `date -d today +%F_%T`" >> /var/log/pptpd-${1}.log 

然后是ip-up的处理:

  1. vim /etc/ppp/ip-down 
  2. #!/bin/sh 
  3. # This script is run by the pppd _after_ the link is brought down. 
  4. # It uses run-parts to run scripts in /etc/ppp/ip-down.d, so to delete 
  5. # routes, unset IP addresses etc. you should create script(s) there. 
  6. # Be aware that other packages may include /etc/ppp/ip-down.d scripts (named 
  7. # after that package), so choose local script names with that in mind. 
  8. # This script is called with the following arguments: 
  9. #    Arg  Name                          Example 
  10. #    $1   Interface name                ppp0 
  11. #    $2   The tty                       ttyS1 
  12. #    $3   The link speed                38400 
  13. #    $4   Local IP number               12.34.56.78 
  14. #    $5   Peer  IP number               12.34.56.99 
  15. #    $6   Optional ``ipparam'' value    foo 
  16.  
  17. # The  environment is cleared before executing this script 
  18. # so the path must be reset 
  19. PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin 
  20. export PATH 
  21.  
  22. # These variables are for the use of the scripts run by run-parts 
  23. PPP_IFACE="$1" 
  24. PPP_TTY="$2" 
  25. PPP_SPEED="$3" 
  26. PPP_LOCAL="$4" 
  27. PPP_REMOTE="$5" 
  28. PPP_IPPARAM="$6" 
  29. export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM 
  30.  
  31. # as an additional convenience, $PPP_TTYNAME is set to the tty name, 
  32. # stripped of /dev/ (if present) for easier matching. 
  33. PPP_TTYNAME=`/usr/bin/basename "$2"` 
  34. export PPP_TTYNAME 
  35.  
  36. # If /var/log/ppp-ipupdown.log exists use it for logging. 
  37. if [ -e /var/log/ppp-ipupdown.log ]; then 
  38.   exec >> /var/log/ppp-ipupdown.log 2>&1 
  39.   echo $0 $@ 
  40.   echo 
  41. fi 
  42.  
  43.  
  44. echo "downtime: `date -d today +%F_%T`" >> /var/log/pptpd-${1}.log 
  45. echo "bytes sent: $BYTES_SENT" >> /var/log/pptpd-${1}.log 
  46. echo "bytes received: $BYTES_RCVD" >> /var/log/pptpd-${1}.log 
  47. echo "connect time: $CONNECT_TIME" >> /var/log/pptpd-${1}.log 
  48. echo "****************************************************" >> /var/log/pptpd-${1}.log 
  49. cat /var/log/pptpd-${1}.log >> /var/log/pptpd.log
  50.  
  51.  
  52.  
  53. # This script can be used to override the .d files supplied by other packages. 
  54. if [ -x /etc/ppp/ip-down.local ]; then 
  55.   exec /etc/ppp/ip-down.local "$@" 
  56. fi 
  57.  
  58. run-parts /etc/ppp/ip-down.d \ 
  59.   --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6" 

最后就可以通过/var/log/pptpd.log文件进行查看PPTP VPN日志了。日志形式如下,需要更美观的自行修改代码:

  1. **************************************************** 
  2. username: nenew 
  3. clientIP: XXX.XXX.XXX.XXX 
  4. device: ppp0 
  5. vpnIP: 172.16.36.1 
  6. assignIP: 172.16.36.2 
  7. logintime: 2015-08-03_17:06:05 
  8. downtime: 2015-08-03_17:06:23 
  9. bytes sent: 164143 
  10. bytes received: 51606 
  11. connect time: 18 
  12. **************************************************** 
OpenVZ VPS的pptp服务安装注意

 

iptables -t nat -A POSTROUTING -s  172.16.36.0/24 -j SNAT –to-source vps网关这句话最好加到/etc/rc.local中,否则可能无法转发,及时iptables-rules里面有。

  1. cat /dev/ppp 
  2. cat: /dev/ppp: No such device or address 
  3. cat /dev/net/tun 
  4. cat: /dev/net/tun: File descriptor in bad state 

  是需要检查的。

网卡可能不是eth0,可能是venet0,而且还可能是venet0:0,看好,看好。

安装脚步for ubuntu pptp vpn

  1. #!/bin/bash 
  2.  
  3. if [ $(id -u) != "0" ]; then 
  4.     printf "Error: You must be root to run this tool!\n" 
  5.     exit 1 
  6. fi 
  7. clear 
  8. printf " 
  9. #################################################### 
  10. #                                                  # 
  11. # This is a Shell-Based tool of pptp installation  # 
  12. # Version: 0.1                                     # 
  13. # Author: Bruce Ku                                 # 
  14. # For Debian/Ubuntu 32bit and 64bit                # 
  15. #                                                  # 
  16. #################################################### 
  17. vpsip=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'` 
  18. apt-get update 
  19. apt-get --purge remove pptpd ppp 
  20. rm -rf /etc/pptpd.conf 
  21. rm -rf /etc/ppp 
  22. apt-get install -y ppp 
  23. apt-get install -y pptpd 
  24. apt-get install -y iptables logrotate tar cpio perl 
  25. rm -r /dev/ppp 
  26. mknod /dev/ppp c 108 0 
  27. echo 1 > /proc/sys/net/ipv4/ip_forward  
  28. echo "mknod /dev/ppp c 108 0" >> /etc/rc.local 
  29. echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local 
  30. echo "net.ipv4.ip_forward = 1>> /etc/sysctl.conf 
  31. echo "localip 172.16.36.1" >> /etc/pptpd.conf 
  32. echo "remoteip 172.16.36.2-254" >> /etc/pptpd.conf 
  33. echo "ms-dns 8.8.8.8" >> /etc/ppp/options 
  34. echo "ms-dns 8.8.4.4" >> /etc/ppp/options 
  35. echo "vpn pptpd 123456 *" >> /etc/ppp/chap-secrets 
  36. iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'` 
  37. iptables -A FORWARD -p tcp --syn -s 172.16.36.0/24 -j TCPMSS --set-mss 1356 
  38. iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -j SNAT --to-source "$vpsip" 
  39. iptables-save > /etc/iptables-rules 
  40. printf " 
  41. #################################################### 
  42. add my Yu 
  43. #################################################### 
  44. echo "pre-up iptables-restore < /etc/iptables-rules" >> /etc/network/interfaces 
  45. printf " 
  46. #################################################### 
  47. add my Yu 
  48. #################################################### 
  49. /etc/init.d/pptpd restart 
  50. printf " 
  51. #################################################### 
  52. #                                                  # 
  53. # This is a Shell-Based tool of pptp installation  # 
  54. # Version: 0.1                                     # 
  55. # Author: Bruce Ku                                 # 
  56. # For Debian/Ubuntu 32bit and 64bit                # 
  57. #                                                  # 
  58. #################################################### 
  59. ServerIP:$vpsip 
  60. username:vpn 
  61. password:123456 
  62.  

安装完成重启

Feedly订阅导出

 

Feedly订阅导出直接访问网址:http://feedly.com/i/opml

64位版本的SocksCap64代理程序介绍与推荐

 

奶牛最近在找一个好用的代理程序,支持socks5的tcp和udp两种协议,并且支持64位win8系统,终于最后找到了这个sockscap64.

首先很难的,作者是国人,并且提倡软件免费,并打算一直免费提供sockscap64这软件。sockscap64目前支持socks代理和http代理,并且支持tcp和udp,Sockscap64是基于远程DLL注入技术, 通过修改系统Winsock的API后从而使运行于Sockscap64的网络软件通过SOCKS代理访问网络; 从而实现网络加速或突破局域网限制的功能。经过测试udp功能也比较稳定。

特此推荐,下载http://www.sockscap64.com/software/SocksCap64-setup-2.6.exe

Ubuntu下socks5代理服务器dante-server的安装与配置

 

安装

  1. apt-get install dante-server 

配置文件在/etc/danted.conf

  1. vim /etc/danted.conf 
  2. # $Id: sockd.conf,v 1.43 2005/12/26 16:35:26 michaels Exp $ 
  3. # A sample danted.conf 
  4. # The configfile is divided into three parts; 
  5. #    1) serversettings 
  6. #    2) rules 
  7. #    3) routes 
  8. # The recommended order is: 
  9. #   Serversettings: 
  10. #               logoutput 
  11. #               internal 
  12. #               external 
  13. #               method 
  14. #               clientmethod 
  15. #               users 
  16. #               compatibility 
  17. #               extension 
  18. #               connecttimeout 
  19. #               iotimeout 
  20. #               srchost 
  21. #  Rules: 
  22. #       client block/pass 
  23. #               from to 
  24. #               libwrap 
  25. #               log 
  26. #     block/pass 
  27. #               from to 
  28. #               method 
  29. #               command 
  30. #               libwrap 
  31. #               log 
  32. #               protocol 
  33. #               proxyprotocol 
  34. #  Routes: 
  35.  
  36. # the server will log both via syslog, to stdout and to /var/log/lotsoflogs 这行是日志输出,输出到syslog stdout和lotsoflogs里面
  37. logoutput: syslog stdout /var/log/lotsoflogs 
  38.  
  39. # The server will bind to the address 10.1.1.1, port 1080 and will only 
  40. # accept connections going to that address. 
  41. #internal: 10.1.1.1 port = 1080 
  42. # Alternatively, the interface name can be used instead of the address. 这里设置eth0为网卡,端口1080
  43. internal: eth0 port = 1080 
  44.  
  45. # all outgoing connections from the server will use the IP address 
  46. # 195.168.1.1 
  47. #external: 192.168.1.1,这里是设置流量出口使用的ip,也是用eth0网卡的
  48. external:eth0
  49. # list over acceptable methods, order of preference. 
  50. # A method not set here will never be selected. 
  51. # If the method field is not set in a rule, the global 
  52. # method is filled in for that rule. 
  53.  
  54. # methods for socks-rules. 设置方式为用户名模式
  55. method: username 
  56. #methods for client-rules. 
  57. clientmethod: none 
  58.  
  59. #or for PAM authentification 
  60. #method: pam 
  61.  
  62. # An important section, pay attention. 
  63.  
  64. # when doing something that can require privilege, it will use the 
  65. # userid: 
  66. user.privileged: root 
  67.  
  68. # when running as usual, it will use the unprivileged userid of: 
  69. user.notprivileged: nobody 
  70.  
  71. # If you compiled with libwrap support, what userid should it use 
  72. # when executing your libwrap commands?  "libwrap". 
  73. user.libwrap: nobody 
  74.  
  75.  
  76. # some options to help clients with compatibility: 
  77.  
  78. # when a client connection comes in the socksserver will try to use 
  79. # the same port as the client is using, when the socksserver 
  80. # goes out on the clients behalf (external: IP address). 
  81. # If this option is set, Dante will try to do it for reserved ports aswell. 
  82. # This will usually require user.privileged to be set to "root". 
  83. compatibility: sameport 
  84.  
  85. # If you are using the bind extension and have trouble running servers 
  86. # via the server, you might try setting this.  The consequences of it 
  87. # are unknown. 
  88. compatibility: reuseaddr 
  89.  
  90. # The Dante server supports some extensions to the socks protocol. 
  91. # These require that the socks client implements the same extension and 
  92. # can be enabled using the "extension" keyword. 
  93. # enable the bind extension. 
  94. extension: bind 
  95.  
  96.  
  97. # misc options. 
  98.  
  99. # how many seconds can pass from when a client connects til it has 
  100. # sent us it's request?  Adjust according to your network performance 
  101. # and methods supported. 
  102. #connecttimeout: 30   # on a lan, this should be enough if method is "none". 
  103.  
  104. # how many seconds can the client and it's peer idle without sending 
  105. # any data before we dump it?  Unless you disable tcp keep-alive for 
  106. # some reason, it's probably best to set this to 0, which is 
  107. # "forever". 
  108. #iotimeout: 0 # or perhaps 86400, for a day. 
  109.  
  110. # do you want to accept connections from addresses without 
  111. # dns info?  what about addresses having a mismatch in dnsinfo? 
  112. #srchost: nounknown nomismatch 
  113.  
  114. # The actual rules.  There are two kinds and they work at different levels. 
  115. # The rules prefixed with "client" are checked first and say who is allowed 
  116. # and who is not allowed to speak/connect to the server.  I.e the 
  117. # ip range containing possibly valid clients. 
  118. # It is especially important that these only use IP addresses, not hostnames, 
  119. # for security reasons. 
  120. # The rules that do not have a "client" prefix are checked later, when the 
  121. # client has sent its request and are used to evaluate the actual 
  122. # request. 
  123. # The "to:" in the "client" context gives the address the connection 
  124. # is accepted on, i.e the address the socksserver is listening on, or 
  125. # just "0.0.0.0/0" for any address the server is listening on. 
  126. # The "to:" in the non-"client" context gives the destination of the clients 
  127. # socksrequest. 
  128. # "from:" is the source address in both contexts. 
  129.  
  130.  
  131. # the "client" rules.  All our clients come from the net 10.0.0.0/8. 
  132.  
  133. # Allow our clients, also provides an example of the port range command. 设置客户可以通过任何ip登陆,访问任何ip
  134. client pass { 
  135.         from: 0.0.0.0/0 to: 0.0.0.0/0 
  136. #       method: rfc931 # match all idented users that also are in passwordfile 
  137.  
  138. # This is identical to above, but allows clients without a rfc931 (ident) 
  139. # too.  In practise this means the socksserver will try to get a rfc931 
  140. # reply first (the above rule), if that fails, it tries this rule. 
  141. #client pass { 
  142. #       from: 10.0.0.0/8 port 1-65535 to: 0.0.0.0/0 
  143. #} 
  144.  
  145.  
  146. # drop everyone else as soon as we can and log the connect, they are not 
  147. # on our net and have no business connecting to us.  This is the default 
  148. # but if you give the rule yourself, you can specify details. 
  149. #client block { 
  150. #       from: 0.0.0.0/0 to: 0.0.0.0/0 
  151. #       log: connect error 
  152. #} 
  153.  
  154.  
  155. # the rules controlling what clients are allowed what requests 
  156.  
  157. # you probably don't want people connecting to loopback addresses, 
  158. # who knows what could happen then. 
  159. #block { 
  160. #       from: 0.0.0.0/0 to: 127.0.0.0/8 
  161. #       log: connect error 
  162. #} 
  163.  
  164. # the people at the 172.16.0.0/12 are bad, no one should talk to them. 
  165. # log the connect request and also provide an example on how to 
  166. # interact with libwrap. 
  167. #block { 
  168. #       from: 0.0.0.0/0 to: 172.16.0.0/12 
  169. #       libwrap: spawn finger @%a 
  170. #       log: connect error 
  171. #} 
  172.  
  173. # unless you need it, you could block any bind requests. 
  174. #block { 
  175. #       from: 0.0.0.0/0 to: 0.0.0.0/0 
  176. #       command: bind 
  177. #       log: connect error 
  178. #} 
  179.  
  180. # or you might want to allow it, for instance "active" ftp uses it. 
  181. # Note that a "bindreply" command must also be allowed, it 
  182. # should usually by from "0.0.0.0/0", i.e if a client of yours 
  183. # has permission to bind, it will also have permission to accept 
  184. # the reply from anywhere. 
  185. #pass { 
  186. #       from: 10.0.0.0/8 to: 0.0.0.0/0 
  187. #       command: bind 
  188. #       log: connect error 
  189. #} 
  190.  
  191. # some connections expect some sort of "reply", this might be 
  192. # the reply to a bind request or it may be the reply to a 
  193. # udppacket, since udp is packetbased. 
  194. # Note that nothing is done to verify that it's a "genuine" reply, 
  195. # that is in general not possible anyway.  The below will allow 
  196. # all "replies" in to your clients at the 10.0.0.0/8 net. 
  197. #pass { 
  198. #       from: 0.0.0.0/0 to: 10.0.0.0/8 
  199. #       command: bindreply udpreply 
  200. #       log: connect error 
  201. #} 
  202.  
  203.  
  204. # pass any http connects to the example.com domain if they 
  205. # authenticate with username. 
  206. # This matches "example.com" itself and everything ending in ".example.com". 
  207. #pass { 
  208. #       from: 10.0.0.0/8 to: .example.com port = http 
  209. #       log: connect error 
  210. #       method: username 
  211. #} 
  212.  
  213.  
  214.  
  215.  
  216. # block any other http connects to the example.com domain. 
  217. #block { 
  218. #       from: 0.0.0.0/0 to: .example.com port = http 
  219. #       log: connect error 
  220. #} 
  221.  
  222. # everyone from our internal network, 10.0.0.0/8 is allowed to use 
  223. # tcp and udp for everything else. 设置协议支持tcp和udp
  224. pass { 
  225.         from: 0.0.0.0/0 to: 0.0.0.0/0 
  226.         protocol: tcp udp 
  227.  
  228. # last line, block everyone else.  This is the default but if you provide 
  229. # one  yourself you can specify your own logging/actions 
  230. #block { 
  231. #       from: 0.0.0.0/0 to: 0.0.0.0/0 
  232. #       log: connect error 
  233. #} 
  234.  
  235. # route all http connects via an upstream socks server, aka "server-chaining". 
  236. #route { 
  237. # from: 10.0.0.0/8 to: 0.0.0.0/0 port = http via: socks.example.net port = socks 
  238. #} 

配置完成,

  1. /etc/init.d/danted start 

进行启动。登陆是用本机用户名和密码即可。建议将用户的shell设置为nologin

linux下命令行上传下载测速

 

好吧,最近搞了个香港服务器,但是香港带宽限制比较严格,当然不能吃亏了,测速,必须测速。

今天主角出场speedtest-cli,它工作在Python 2.4-3.4

安装:

  1. pip / easy_install 
  2.  
  3. pip install speedtest-cli 
  4.  
  5. or 
  6.  
  7. easy_install speedtest-cli 
  8.  
  9. Github 
  10.  
  11. pip install git+https://github.com/sivel/speedtest-cli.git 
  12.  
  13. or 
  14.  
  15. git clone https://github.com/sivel/speedtest-cli.git 
  16. python speedtest-cli/setup.py install 
  17.  
  18. Just download (Like the way it used to be) 
  19.  
  20. wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py 
  21. chmod +x speedtest-cli 
  22.  
  23. or 
  24.  
  25. curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py 
  26. chmod +x speedtest-cli 

功能和使用:

  1. $ speedtest-cli -h 
  2. usage: speedtest-cli [-h] [--bytes] [--share] [--simple] [--list] 
  3.                      [--server SERVER] [--mini MINI] [--source SOURCE] 
  4.                      [--timeout TIMEOUT] [--version] 
  5.  
  6. Command line interface for testing internet bandwidth using speedtest.net. 
  7. -------------------------------------------------------------------------- 
  8. https://github.com/sivel/speedtest-cli 
  9.  
  10. optional arguments: 
  11.   -h, --help         show this help message and exit 
  12.   --bytes            Display values in bytes instead of bits. Does not affect 
  13.                      the image generated by --share 
  14.   --share            Generate and provide a URL to the speedtest.net share 
  15.                      results image 
  16.   --simple           Suppress verbose output, only show basic information 
  17.   --list             Display a list of speedtest.net servers sorted by 
  18.                      distance 
  19.   --server SERVER    Specify a server ID to test against 
  20.   --mini MINI        URL of the Speedtest Mini server 
  21.   --source SOURCE    Source IP address to bind to 
  22.   --timeout TIMEOUT  HTTP timeout in seconds. Default 10 
  23.   --version          Show the version number and exit 

简单测速,奶牛是在ubuntu下进行的测试:

  1. apt-get install python-pip 
  2. pip install speedtest-cli 

安装完成后执行:

  1. speedtest 

测试结果如下:

  1. root@gameserver1:~# speedtest  
  2. Retrieving speedtest.net configuration...  
  3. Retrieving speedtest.net server list...  
  4. Testing from Shanghai Anchnet Network Technology (XXX.XXX.XXX.XXX)...  
  5. Selecting best server based on latency...  
  6. Hosted by Shanghai Branch, China Unicom (Shanghai) [19.64 km]: 29.249 ms  
  7. Testing download speed........................................  
  8. Download: 18.84 Mbit/s  
  9. Testing upload speed..................................................  
  10. Upload: 1.51 Mbit/s