? Editing: Post:21.body Save Delete Cancel
Content changed Sign & Publish new content

World password MyZeroBlog

My ZeroBlog.

Follow in NewsfeedFollowing

Latest comments:

搭建 BT_Tracker (公共)

on Apr 10, 2018

平台:Debian_9.x

工具:opentracker

准备:预先安装基本编译环境

# apt-get install make cvs zlib1g-dev libgtk2.0-dev git
# cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
# cd libowfat
# make
### LEGACY: cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker
# git clone git://erdgeist.org/opentracker
# cd opentracker
# make
### 注意目录路径关系!!!

配置文件路径 与 opentracker 可执行文件 同目录 文件名--opentracker.conf.sample

注:因默认情况是监听--本机所有ip 协议--tcp+udp 端口--6969,而本次我们使用nginx+tls让它成为htts。因此修改 配置为只监听--127.0.0.1 协议--tcp 端口--6969

修改配置文件 opentracker.conf.sample 向文件中添加 或者 修改成listen.tcp 127.0.0.1

启动./opentracker -f ./opentracker.conf.sample

接着测试opentracker# curl http://127.0.0.1:6969/stats

如果返回以下内容证明成功

0
0
opentracker serving 0 torrents
opentracker

修改nginx 配置

server {
############# opentracker
...省略其他配置...
location /stats {
        proxy_pass http://remote_server_opentracker;
        }
location /announce {
        proxy_pass http://remote_server_opentracker;
        }
############# opentracker
}
### 注意下面添加位置在 server 外
upstream remote_server_opentracker {
         server 127.0.0.1:6969;
}

测试 nginx# nginx -t

通过后重启 nginx

测试是否成功套上https : # curl https://域名/stats
如果返回以下内容则成功

0
0
opentracker serving 0 torrents
opentracker

至此公共tracker 搭建完成(有兴趣可以套上用户密码认证--应该可以在nginx 完成)。tracker地址: https://域名/announce

Read more

路由器串联(并联)

on Feb 14, 2018 · less than 1 min read

简单介绍下:

串联:【一条宽带,两个路由器级联】


路由并联

R1为主路由,WAN口连接互联网;R2的WAN口级联到R1的LAN1口。对于人眼来说,R2下有多台电脑,但对于R1路由器来说,她只认为有四台电脑分别连接其LAN1...4口。R2下所有电脑,共享R1的LAN1口带宽。如果网络管理员在R1路由器中,采用IP带宽控制方法,每个IP 分1M带宽,那么R1下面的电脑每台都可以有1M的带宽,而R2下面的电脑却要一起分1M带宽,这个不难理解吧?

并联:【一条宽带,两个路由器并联】

R1路由器为主路由,WAN口连接互联网;R1以交换机方式,其LAN1口接入R1的LAN1口。


路由串联

这种连接方式,在R1路由器看来,其下接了六台电脑。如果网管在R1中限制每个IP 1M带宽,就相当于每台电脑都可以享有1M带宽,包括R2下的电脑,而前一种串联方式是R2下面的三台电脑瓜分1M带宽,差距大吧?这就是为什么伙伴们采用并联方式时,在有的情况下会觉得网速比串联快的原因。

-------------------------以上内容来源于:http://www.360doc.com/content/15/1001/09/22263960_502621069.shtml

接着我的目的:因为wi-fi总有些覆盖不到的角落,所以想利用多出来的路由实现无线wi-fi的全覆盖。

我采取的是并联方式(我称它为交换机模式)

这样在所有的次级路由(相当于上图R2)上将LAN侧的DHCP关闭并并设置固定ip(此ip必须在主路由网络中,但不能与主路由相同)网关、子网掩码与主路由LAN侧相同(相当于上图R1)

(向百度知道借图,大概就这意思):
次级路由LAN设置
次级路由DHCP设置

接着设置次级路由wi-fi与主路由wi-fi的所有设置相同即可。这样就实现了平滑切换wi-fi而不断网。

Read more

Windows QT_5.9.1 下利用 comboBox 的currentIndex属性 更改控件属性(例如隐藏)

on Feb 09, 2018

使用 Qt_Creator 创建ui(包含comboBox一个 其他控件例如 groupBox 一个)

目的是 用户在操作 comboxBox 选中不同内容时(currentIndex的值不同默认从0开始) 是否显示 groupBox (注:groupBox默认不显示)

代码:

在mainwindow.cpp中的 ui->setupUi(this) 下添加

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{
    ui->setupUi(this);
    ui->groupBox->close(); //此处设置groupBox默认属性隐藏
###########
//QT 帮助文档提供的写法
connect(comboBox, static_castQComboBox::*)(int)>(&QComboBox::currentIndexChanged),

      [=](int index){ /* ... */ });  //在/*和*/之间写入自己的代码
#################
connect(ui->comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),

          [=](int index){

            if(index==1) //判断 index 参数

                {ui->groupBox_2->show();} //设置使groupBox_2显示

    );
}
Read more

intel 芯片级漏洞相关

on Jan 12, 2018

较通俗的介绍,想了解的可以看看!

http://www.bilibili.com/video/av18144159

Read more

使v2ray、web、SSR共用443

on Dec 08, 2017

这里如何搭建各单一平台我就不阐述了,网上这类教程很多。

这里主要是想将他们融和起来。(当然你也可以抛弃ssr部分直接使用Nginx+V2ray

我们这样做「SSR」监听 【外网】 443端口,如果是 SSR 连接那么将得到回复,如果不是将流量转至 【内网】「Nginx」监听端口(这个端口可以随意)。接着「Nginx」判断流量是否是 「V2ray」客户端连接,如果是将流量转入 「V2ray」监听的【内网】端口(这个也随意),如果不是将返回任意网(例如〔服务器网站首页〕)。

这样可以利用网站流量来淹没流量。

【SSR部分】 采取 python版 〔混淆+重定向〕(tls1.2_ticket_auth+redirect)

大致的配置文件内容如下!

{
"server": "服务器ip", #如果你的主机有多ip可以填写成 0.0.0.0
//"server_ipv6": "::",
"server_port": 110, #监听端口此处为110
//"local_address": "127.0.0.1",
//"local_port": 1080,
"password": "此处密码",
"method": "加密方式",
"protocol": "协议插件",
"protocol_param": "", #此处暂无参数
"obfs": "混淆插件", # 混淆插件, 参数plain: 不混淆(选择啥自己考虑)
"obfs_param": "此处填写你想要的混淆参数内容。以逗号「,」分隔(多数为网站域名,关于是填写国内域名还是国外域名这个自己考虑吧)",
"speed_limit_per_con": 0,
"speed_limit_per_user": 0,
"additional_ports" : {}, // only works under multi-user mode
"additional_ports_only" : false, // only works under multi-user mode
"timeout": 120,
"udp_timeout": 60,
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": ["_:80#127.0.0.1:443","_:443#127.0.0.1:443"], #此处是重定向部分,利用功能可以将非ssr流量转入 Nginx。
"fast_open": false
}

【Nginx 部分】Nginx_version=1.10.3

至于如何安装和申请证书这部分可以自己搜索下和看这里(建议手动安装不要采取一键)

我们想 Nginx 做分流以区分正常网站连接和V2ray客户端连接,这里需要涉及WebSocket。以下为示例配置(该文件的位置因该在 /etc/nginx/sites-available )

server {
    #listen 80 default_server;
    listen 127.0.0.1:80;
    #listen [::]:80 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;
    server_name 此处填写你的域名;
    return 301 https://$server_name/$request_uri;
}
server {
    #listen 443 ssl http2;
    #listen [::]:443 ssl;
    listen 127.0.0.1:443 ssl;

    ssl on;
    ssl_certificate 填写证书绝对路径; #当然相对路径也不是不可以
    ssl_certificate_key 填写证书绝对路径;
    ssl_dhparam /data/dhparam.pem; #对于这个文件的生成可以参考这里http://127.0.0.1:43110/1GvioVH82Hqef6eD65V7zi59vc93q5nTBN/?Post:19
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
#    ssl_prefer_server_ciphers on;
#    include snippets/snakeoil.conf;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php tail.html ;

    server_name _;
#此处以下是与v2ray相关
    location /test/ { #这里的路径末尾有 “/”和没有“/”是有区别的,自己可以体验下。
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        #这里没有做非v2ray客户端时Nginx该如何反应。这样设置应该会直接404
        if ($http_host = "填写你想要的多数为域名" ) {
            proxy_pass http://127.0.0.1:10086;
            }
    }
#此处以上与v2ray相关
# pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
    #
    #    # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    #    # With php-cgi (or other tcp sockets):
    #    fastcgi_pass 127.0.0.1:9000;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny all;
    #}
}

【V2ray】部分 提供 〔服务端〕 示例

{
  "log" : {
//    "access": "/var/log/v2ray/access.log",
//    "error": "/var/log/v2ray/error.log",
    "loglevel": "debug"
  },
  "inbound": {
    "listen": "127.0.0.1",
    "port": 10086,
    "protocol": "vmess",
    "settings": {
      "clients": [
    {
      "id": "这个没什么好说的",
      "level": 0,
//      "security": "chacha20-ietf-poly1305",
      "alterId": 64
    }
      ]
    },
    // 以下是关于ws设定
    "streamSettings":{
        "network":"ws",
//    "security":"auto",
    "wsSettings":{
        "path": "/test/",
        //false  true
        //"connectionReuse": true,
        "headers":{
            "Host":"此处填写你的域名"
        }
    }
    },
    // 以上是关于ws设定
    "mux": {
        "enabled": true,
    "concurrency": 64
    }
  },
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  },
  "outboundDetour": [
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "rules": [
        {
          "type": "field",
          "ip": [
            "0.0.0.0/8",
            "10.0.0.0/8",
            "100.64.0.0/10",
            "127.0.0.0/8",
            "169.254.0.0/16",
            "172.16.0.0/12",
            "192.0.0.0/24",
            "192.0.2.0/24",
            "192.168.0.0/16",
            "198.18.0.0/15",
            "198.51.100.0/24",
            "203.0.113.0/24",
            "::1/128",
            "fc00::/7",
            "fe80::/10"
          ],
          "outboundTag": "blocked"
        }
      ]
    }
  }
}

最后提示:如果套上cdn的话!其实有另一个用法。

我这就提示下:vps域名对应的cdn_ip上是有很多个域名存在的。

Read more

vps 查看硬盘通电时间

on Oct 10, 2017

『很多朋友在问,买了国外的服务器后,怎么查看服务器提供商给配置的机子,尤其是硬盘是不是旧硬盘,或者说配置的硬盘使用了多少时间。其实,很多时候,不查还好,查了会吓你一跳的。因为很多基本上都是旧硬盘,有些使用时间真的是非常巨大……。现在跟我来吧,一起来学习如何查看服务器硬盘的使用时间。很简单的。
在之前先要先安装:smartmontools,关于smartmontools的介绍在这里:http://smartmontools.sourceforge.net/
其实很多服务器都是已经安装了的,如果没有安装,在centos下用下面这个命令,如果是其它操作系统,修改一下就成了。

yum install smartmontools -y

如果提示有问题,或者不能查看的话,把sda换成你的硬盘的名称就可以了。具体你的硬盘的名称可以使用下面命令查看

df

我的服务器输入命令后显示这个:

root@uname:$ smartctl -A /dev/sda1SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   111   100   006    Pre-fail  Always       -       41093440
  3 Spin_Up_Time            0x0003   095   094   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       80
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   071   060   030    Pre-fail  Always       -       13735889
  9 Power_On_Hours          0x0032   096   096   000    Old_age   Always       -       3737
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       78
183 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
184 Unknown_Attribute       0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       3
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   071   059   045    Old_age   Always       -       29 (Lifetime Min/Max 29/33)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       77
193 Load_Cycle_Count        0x0032   097   097   000    Old_age   Always       -       7890
194 Temperature_Celsius     0x0022   029   041   000    Old_age   Always       -       29 (0 11 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       106193066393916
241 Unknown_Attribute       0x0000   100   253   000    Old_age   Offline      -       184659636179
242 Unknown_Attribute       0x0000   100   253   000    Old_age   Offline      -       322824384168

找到:

 9 Power_On_Hours          0x0032   096   096   000    Old_age   Always       -       3737

这一行的最后的那个数字,比如说我的3737,就是我的服务器的硬盘的使用时间,注意这个单位是Power_On_Hours,是小时。除以24就是对应的天数了。如果显示的是Power_On_Minutes,那就是分钟了。很简单吧。

debian 系安装

apt-get install smartmontools

Read more

VM VirtualBox 虚拟 linux 后添加共享文件夹提示没有权限访问 (解决)

on Oct 08, 2017

解决方案就是将 <以登录的用户> 加入 用户组中

在帖子 http://blog.csdn.net/boarmy/article/details/19074473

https://www.crifan.com/can_not_access_share_folder_in_ubuntu_virtualbox/

都提示 使用 adduser命令来将 <用户加> 入 用户组 注:这个命令是新建用户命令 这是个错误方法

正确方法是 使用

usermod 命令

示范:(添加用户:user9 到 组 vboxsf)

usermod -a user9 -G vboxsf

Read more

编译 魔改bbr (tcp_tsunami、tcp_bbr_powered)

on Sep 06, 2017

注意: 需要安装内核头文件 文件名类似:kernel-ml-headers-4.12.10-1.el6.elrepo.x86_64.rpm

源码(tcp_tsunami):

wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c

Read more

debian9x install nodejs

on Aug 20, 2017

curl -sL https://deb.nodesource.com/setup_6.x | bash -

apt-get install nodejs

测试:

node --version

npm version

命令 screenfetch #查看主机信息 包括:os、kernel、cpu、RAM、等

命令 select-editor #设置编辑器

Read more

Nginx SSL (https://www.ssllabs.com/ssltest/ » A)

on Aug 19, 2017

平台 debian9+_x64;Nginx_1.10.3;php_7.0.19

1、安装 Nginx和php 不做详细介绍介绍

apt-get install nginx php7.0-fpm

2、获取证书 (采取 acme 脚本获取)

项目地址 https://github.com/Neilpang/acme.sh

2.1 安装 acme.sh

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --home /home/acme --config-home /home/acme/data

注:参数介绍

--home "acme.sh 安装目录"

--config-home “"证书和配置文件所在位置"

重要:并且使用 source .bashrc 手动重新加载配置

2.2 拿到证书(采取 http 方式——条件就是 nginx必须运行并监听80端口,并且域名解析结果指向目标服务器)

当前申请的域名 mydomain.xyz

# acme.sh --issue -d mydomain.xyz -d www.mydomain.xyz -w /var/www/html/

命令介绍:

--issue 获取证书

-d 需要签名的域名

-w 域名根目录

注:默认签发RSA证书 需要签发ECC 需要加参数 --keylength ec-256

RSA 支持:2048, 3072, 4096, 8192

ECC 支持:ec-256, ec-384

3、配置 Nginx (只配置default)

nginx 有个默认网页,与该默认网页有关的配置文件在 "/etc/nginx/sites-enabled/default" 注:(该default其实是 "/etc/nginx/nginx.conf" 中的 server 字段,这样nginx.conf 中没必要设定 server字段,网站可以根据情况自己配置server字段。另外该default是个软连接,也就是说删除这个软连接就不会启动这个server但配置文件同样存在,下次要启动时再创建软连接 使用 nginx -s reload 重新加载配置就行了,这样使nginx配置server更灵活)

3.1 /etc/nginx/sites-enabled/default 完整配置

注:在配置中有个字段 "ssl_dhparam /data/dhparam.pem" 该文件需要使用命令 openssl dhparam out dhparam.pem 2048 如果你的机器够强可以使用 4096

server {
    listen 80 default_server;

    server_name mydomain.xyz;
    server_name www.mydomain.xyz;
    return 301 https://www.mydomain.xyz$request_uri;
}

server {
    listen 443 ssl;
    #listen [::]:443 ssl;
    server_name mydomain.xyz;
    ssl on;
    ssl_certificate /data/mydomain.xyz_ecc/fullchain.cer;
    ssl_certificate_key /data/mydomain.xyz_ecc/mydomain.xyz.key;
    ssl_dhparam /data/dhparam.pem;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout  5m;
    ssl_stapling on;
    ssl_trusted_certificate /data/mydomain.xyz_ecc/fullchain.cer;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA"; #屏蔽不安全的加密方式
    ssl_prefer_server_ciphers on;
    include snippets/snakeoil.conf;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php ;

    server_name _;

    location /1/ {
        autoindex_exact_size off;
        autoindex_localtime on;
        autoindex on;
        charset utf-8,gbk;
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
#        try_files $uri $uri/ =404;
        try_files $uri $uri/ =404;
    }

    # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
    #
    #    # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    #    # With php-cgi (or other tcp sockets):
    #    fastcgi_pass 127.0.0.1:9000;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny all;
    #}
}

4、php配置 在上面的配置文件中 php 部份

相关参数 fastcgi_pass unix: /var/run/php7.0-fpm.sock;

注意:这是 debian9x 的目录位置如果其他平台请自行搜索

测试 php 是否成功可以直接在网站根目录直接运行以下代码(注意保存文件为 ".php" 后缀)

代码:

<?php
    phpinfo();
?>
Read more

内核 编译

on Aug 06, 2017

编译平台 debian_9x_x64 kernel=4.9.3

1、构建编译环境

#apt-get update //更新源

#apt-get install build-essential fakeroot

#apt-get build-dep linux //安装 编译 linux 所需要的库

:由于关系包有很多,如果想卸载可以在安装前先记录下build-dep安装的包

#apt-get build-dep linux | tee linux_bulide-dep.txt

Debian系统可以用Deborphan清理没有被依赖的软件包

2、准备 kernel 源码(这里只从 kernel.org 下载)

前往地址:https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.30.tar.xz //选择相应的版本 (注:此处有个小技巧,下载时请下载 ".tar.xz" 文档,不要下载 ".tar.gz" 文档,因为后者体积偏大!)

2.1 解压 源码

解压命令:#tar -xvJf linux-4.9.30.tar.xz // 会解压到当前目录

3、配置 内核 (本例只是想将修改默认拥塞算法为 bbr 并且直接编译在内核中并非以模块存在)

进入 源码根目录 // 此例目录地址 #/home/linux/linux-4.9.30

运行 #make menuconfig 配置内核 // 此命令需要依赖 一个包:#apt-get install libncurses5-dev

:在运行 该命令前你也可以事先拷贝路径 /boot/config-$uname -r 的文件至内核源码根目录(该文件是当前内核的配置“"uname -r" 获取内核版本号)。任何问题请 google -- "make menuconfig 使用"

3.1 修改 bbr 为默认拥塞控制算法 (将左侧 "< >" 中改成 "*" 就行了)

拥塞控制算法位置:/Networking support > Networking options > TCP: advanced congestion control

4、编译 (直接生成 ".deb" 安装包——方便管理)

#make deb-pkg LOCALVERSION=-text_0.01

// "LOACLVERSION" 添加版本信息——方便识别、管理,此时为单线程模式。

:初次编译建议使用这种模式——可以检验编译环境是否有问题和快速定位问题源!

5、安装

#dpkg -i xx.deb //命令模板

5.1 安装顺序

如果没有其他参数控制 将会生成 5个 ".deb" 分别是:

linux-image-version 包含内核映像和相关模块的

linux-headers-version 包含构建外部模块所需的头文件,

linux-firmware-image-version 其中包含某些驱动程序所需的固件文件(从Debian提供的内核源构建时可能会丢失此软件包)

linux-image-version-dbg 包含内核映像及其内核映像的调试符号模块和linux-libc-dev-version 其中包含与某些用户空间库(如GNU glibc)相关的头文件

常用的就是 "内核映像和模块包" "头文件包" 和 "驱动固件"

安装顺序: 驱动固件 > 头文件 > 内核映像

Read more

YouTube 下载 封面

on Aug 05, 2017

https://i.ytimg.com/vi/$替换成视频地址/maxresdefault.jpg

例如:(地址为自行伪造)

视频地址 https://www.youtube.com/watch?v=vbZtWHuIa2c

封面地址:https://i.ytimg.com/vi/vbZtWHuIa2c/maxresdefault.jpg

Read more

丢包统计 来源:https://ylgrgyq.github.io/2017/07/24/linux-receive-packet-2/

on Jul 30, 2017

丢弃数据包统计

如果因为 backlog 不够或者 flow limit 不够数据包被丢弃的话会将丢包信息计入 /proc/net/softnet_stat。我们也能在这里看到有没有丢包发生:

cat /proc/net/softnet_stat
930c8a79 00000000 0000270b 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
280178c6 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000 0cbbd3d4 00000000

一个 CPU 一行数据。但比较麻烦的是每一列具体表示的是什么意思没有明确文档,可能不同版本的 kernel 打印的数据不同。需要看( softnet_seq_show 注意:内核版本)这个函数是怎么打印的。一般来说第二列是丢包数。

seq_printf(seq,
           "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
           sd->processed, sd->dropped, sd->time_squeeze, 0,
           0, 0, 0, 0, /* was fastroute */
           sd->cpu_collision, sd->received_rps, flow_limit_count);

time_squeeze 是 net_rx_action 执行的时候因为 budget 不够而停止的次数。这说明数据包多而 budget 小,增大 budget 有助于更快的处理数据包
cpu_collision 是发消息时候 CPU 去抢 driver 的锁没抢到的次数
received_rps 是 CPU 被通过 Inter-processor Interrupt 唤醒来处理 Backlog 数据的次数。上面例子中看到只有 CPU1 被唤醒过,因为这个 NIC 只有一个 Ring Buffer,IRQ 都是 CPU0 在处理,所以开启 RPS 后都是 CPU0 将数据发到 CPU1 的 Backlog 然后唤醒 CPU1;
flow_limit_count 标识触碰 flow limit 的次数

Read more

sysctl 调整 来源:https://wiki.mikejung.biz/Sysctl_tweaks

on Jul 30, 2017

net.core.wmem_max
net.core.wmem_max设置定义最大发送套接字缓冲区大小(以字节为单位)。

您可以看到在Ubuntu 15.04(3.18.0-13-generic)上,net.core.wmem_max的默认值为212992,与rmem_max的大小相同。将此值提高到更大的值将增加发送缓冲区大小,但在调整此设置之前,我强烈建议您阅读本文,了解有关当前Linux网络的状态 - http://lwn.net/Articles/616241/

sysctl -a | grep -i wmem

net.core.wmem_default = 212992 net.core.wmem_max = 212992 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.udp_wmem_min = 4096
net.ipv4.tcp_wmem
tcp_wmem(从Linux 2.4开始)这是一个3个整数的向量:[min,default,max]。

这些参数由TCP用于调整发送缓冲区大小。TCP根据可用内存,在这些值的范围内,根据下面列出的默认值动态调整发送缓冲区的大小。

min每个TCP套接字使用的发送缓冲区的最小大小。默认值为系统页面大小。(在Linux 2.4上,默认值为4K字节。)
该值用于确保在内存压力模式下,低于此大小的分配仍将成功。这不用于绑定在套接字上使用SO_SNDBUF声明的发送缓冲区的大小。

default TCP套接字的发送缓冲区的默认大小。此值覆盖为所有协议定义的通用全局net.core.wmem_default的初始默认缓冲区大小。
默认值为16K字节。如果需要较大的发送缓冲区大小,则应增加该值(以影响所有套接字)。

要使用大型TCP窗口,必须将/ proc / sys / net / ipv4 / tcp_window_scaling设置为非零值(默认值)。

max每个TCP套接字使用的发送缓冲区的最大大小。该值不会覆盖/ proc / sys / net / core / wmem_max中的值。这不用于限制在套接字上使用SO_SNDBUF声明的发送缓冲区的大小。
默认值使用以下公式计算:max(65536,min(4MB,tcp_mem [1] * PAGE_SIZE / 128))

在Linux 2.4上,默认值为128K字节,根据低内存系统降低64K。)

要修改tcp_wmem最小值,默认值和最大值,请编辑sysctl.conf并使用以下格式

net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem
源人tcp

tcp_rmem(从Linux 2.4开始)这是3个整数的向量:[min,default,max]。

这些参数由TCP用于调节接收缓冲区大小。TCP根据系统中可用的内存,在这些值的范围内,从下面列出的默认值动态调整接收缓冲区的大小。

min每个TCP套接字使用的接收缓冲区的最小大小。默认值为系统页面大小。在Linux 2.4上,默认值为4K,在低内存系统中降低到PAGE_SIZE个字节。
该值用于确保在内存压力模式下,低于此大小的分配仍将成功。这不用于绑定在套接字上使用SO_RCVBUF声明的接收缓冲区的大小。

default TCP套接字的接收缓冲区的默认大小。默认值为87380字节。(在Linux 2.4中,这将在低内存系统中降低到43689)
此值将覆盖为所有协议定义的通用全局net.core.rmem_default的初始默认缓冲区大小。

如果需要较大的接收缓冲区大小,则应该增加该值(以影响所有套接字)。要使用大型TCP窗口,必须启用net.ipv4.tcp_window_scaling(默认)。

max每个TCP套接字使用的接收缓冲区的最大大小。默认值使用以下公式计算:max(87380,min(4MB,tcp_mem [1] * PAGE_SIZE / 128))。(在Linux 2.4上,默认为87380 * 2字节,在低内存系统中降低到87380)。
此值不会覆盖全局net.core.rmem_max。这不用于限制在套接字上使用SO_RCVBUF声明的接收缓冲区的大小。

要修改tcp_rmem最小值,默认值和最大值,请编辑sysctl.conf并使用以下格式

net.ipv4.tcp_rmem = 4096 12582912 16777216

net.ipv4.tcp_max_syn_backlog
来源:man tcp

tcp_max_syn_backlog(integer; default:见下文;自Linux 2.2起)
连接客户端尚未收到确认的排队连接请求的最大数量。如果超过此数字,内核将开始丢弃请求。
当系统中存在的内存足够或更大(> = 128Mb)时,默认值256增加到1024,而对于具有非常低的内存(<= 32Mb)的系统,默认值为128。
建议如果需要增加1024以上,TCP_SYNQ_HSIZEin将包含/ net / tcp.h,以保持TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog,并重新编译内核。
要修改此值,可以将以下行添加到/etc/sysctl.conf

net.ipv4.tcp_max_syn_backlog = $integer
您可能不希望将其设置得太高,除非您的服务器有足够的资源,即使如此,如果您获得了大量的积压,并且您的服务器无法跟上,您可能会更好地使用负载平衡器和拆分多个服务器之间的流量。

英文原版

net.core.rmem_max
The net.core.rmem_max setting defines the maximum receive socket buffer size in bytes.

There are a few different settings that all appear to be very similar. You can see that on Ubuntu 15.04 (3.18.0-13-generic) the default value for net.core.rmem_max is 212992. The default and max values are the same in this case. Raising this to a larger value will increase the buffer size, but this can have nasty effects in terms of "buffer bloat" I highly suggest reading about the current state of Linux networking by checking out this article - http://lwn.net/Articles/616241/

sysctl -a | grep -i rmem

net.core.rmem_default = 212992 net.core.rmem_max = 212992 net.ipv4.tcp_rmem = 4096 87380 6291456 net.ipv4.udp_rmem_min = 4096 net.core.wmem_max
The net.core.wmem_max setting defines the maximum send socket buffer size in bytes.

You can see that on Ubuntu 15.04 (3.18.0-13-generic) the default value for net.core.wmem_max is 212992, which is the same size as rmem_max. Raising this to a larger value will increase the send buffer size, but before you adjust this setting I highly suggest reading about the current state of Linux networking by checking out this article - http://lwn.net/Articles/616241/

sysctl -a | grep -i wmem

net.core.wmem_default = 212992 net.core.wmem_max = 212992 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.udp_wmem_min = 4096
net.ipv4.tcp_wmem
tcp_wmem (since Linux 2.4) This is a vector of 3 integers: [min, default, max].

These parameters are used by TCP to regulate send buffer sizes. TCP dynamically adjusts the size of the send buffer from the default values listed below, in the range of these values, depending on memory available.

min Minimum size of the send buffer used by each TCP socket. The default value is the system page size. (On Linux 2.4, the default value is 4K bytes.)
This value is used to ensure that in memory pressure mode, allocations below this size will still succeed. This is not used to bound the size of the send buffer declared using SO_SNDBUF on a socket.

default The default size of the send buffer for a TCP socket. This value overwrites the initial default buffer size from the generic global net.core.wmem_default defined for all protocols.
The default value is 16K bytes.If larger send buffer sizes are desired, this value should be increased (to affect all sockets).

To employ large TCP windows, the /proc/sys/net/ipv4/tcp_window_scaling must be set to a non-zero value (default).

max The maximum size of the send buffer used by each TCP socket. This value does not override the value in /proc/sys/net/core/wmem_max. This is not used to limit the size of the send buffer declared using SO_SNDBUF on a socket.
The default value is calculated using the formula: max(65536, min(4MB, tcp_mem[1]*PAGE_SIZE/128))

On Linux 2.4, the default value is 128K bytes, lowered 64K depending on low-memory systems.)

To modify tcp_wmem min, default, and max values, edit sysctl.conf and use the following format

net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem
source man tcp

tcp_rmem (since Linux 2.4) This is a vector of 3 integers: [min, default, max].

These parameters are used by TCP to regulate receive buffer sizes. TCP dynamically adjusts the size of the receive buffer from the defaults listed below, in the range of these values, depending on memory available in the system.

min Minimum size of the receive buffer used by each TCP socket. The default value is the system page size. On Linux 2.4, the default value is 4K, lowered to PAGE_SIZE bytes in low-memory systems.
This value is used to ensure that in memory pressure mode, allocations below this size will still succeed. This is not used to bound the size of the receive buffer declared using SO_RCVBUF on a socket.

default The default size of the receive buffer for a TCP socket. The default value is 87380 bytes. (On Linux 2.4, this will be lowered to 43689 in low-memory systems.)
This value overwrites the initial default buffer size from the generic global net.core.rmem_default defined for all protocols.

If larger receive buffer sizes are desired, this value should be increased (to affect all sockets). To employ large TCP windows, the net.ipv4.tcp_window_scaling must be enabled (default).

max The maximum size of the receive buffer used by each TCP socket. The default value is calculated using the formula: max(87380, min(4MB, tcp_mem[1]PAGE_SIZE/128)). (On Linux 2.4, the default is 873802 bytes, lowered to 87380 in low-memory systems).
This value does not override the global net.core.rmem_max. This is not used to limit the size of the receive buffer declared using SO_RCVBUF on a socket.

To modify tcp_rmem min, default, and max values, edit sysctl.conf and use the following format

net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_max_syn_backlog
source: man tcp

tcp_max_syn_backlog (integer; default: see below; since Linux 2.2)
The maximum number of queued connection requests which have still not received an acknowledgement from the connecting client. If this number is exceeded, the kernel will begin dropping requests.
The default value of 256 is increased to 1024 when the memory present in the system is adequate or greater (>= 128Mb), and reduced to 128 for those systems with very low memory (<= 32Mb).
It is recommended that if this needs to be increased above 1024, TCP_SYNQ_HSIZEin include/net/tcp.h be modified to keep TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog,and the kernel be recompiled.
To modify this value you can add the following line to /etc/sysctl.conf

net.ipv4.tcp_max_syn_backlog = $integer
You probably don't want this to be set too high unless your server has plenty of resources, even then, if you are getting a large backlog and your server can't keep up you might be better off with using a load balancer and splitting the traffic between multiple servers.

Read more

实时查看日志(其实不仅仅是log)

on May 30, 2017

实时查看日志:tail -f -s 3 -n 150 /var/log/log1.log

命令解释:

-f 循环读取

-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

-n <行数> 显示行数

Read more
Add new post

Title

21 hours ago · 2 min read ·
3 comments
Body
Read more

Not found

Title

21 hours ago · 2 min read

0 Comments:

user_name1 day ago
Reply
Body
This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More