分类目录归档:Linux

利用百度网盘直接下载助手下载大文件

介绍:

百度网盘直接下载助手 是一款浏览器用户脚本(user scripts),在无登录,无客户端情况下直接下载百度网盘和百度网盘分享的大文件,避免下载文件时调用百度网盘客户端,获取网盘文件的直接下载地址。

此脚本不仅限于上述特性,而且还不限速,非常好用。

1.安装一个用户脚本管理器

使用Tampermonkey(油猴)脚本,需要在浏览器安装一个扩展,然后再安装脚本,支持以下浏览器:

ChromeMicrosoft Edge、SafariFirefoxOpera NextDolphin BrowserUC Browser

安装方法:

打开Tampermonkey官网选择匹配的浏览器点击下载安装即可:

//tampermonkey.net/

2.安装百度网盘直接下载助手脚本

打开以下连接安装此脚本即可:

//greasyfork.org/zh-CN/scripts/39504-%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B-%E7%9B%B4%E9%93%BE%E5%8A%A0%E9%80%9F%E7%89%88

安装完成后,在百度网盘重新打开需要下载的链接地址,或刷新地址,此时你应该看到一个 下载助手 鼠标放上去会显示 直接下载 & 显示连接 如果你使用迅雷下载,复制下载连接,在迅雷中新建下载任务即可。

如果百度网盘直接下载助手不能使用,请打开 //greasyfork.org 网站,搜索关键字 百度网盘 会列出多个脚本,根据需要安装脚本即可,如果不行就多尝试几个,总有一款适合你。

Linux下的21个ss命令使用示例详解

简介:

Socket Statisticsss)命令类似于netstat,它用于显示各种有用的网络套接字信息。

长时间看,已经注意到netstat这个命令程序已经过时了。从而代替netstat的是ss命令。一个全新的ss命令使用起来必定有些陌生,不过ss许多选项与netstat使用的选项类似,但我们还会看到一些差异。

ss命令是Linux CentOS 7iproute软件包的一部分,默认已经安装。

一般来说,网络套接字是由IP地址,传输协议和端口来定义的。这种组合构成了双向连接的一个方面。例如:一个Web服务器可能正在侦听172.28.204.62:80上的传入TCP连接,这是套接字。不过需要说明的是套接字不是连接本身,而是连接的端点之一。

下面我讲解如何使用ss命令查看各种信息。具体使用语法如下:

ss [options] [ FILTER ]

1.列出已建立的连接

默认情况下,如果我们运行ss命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如TCPUDPUNIX套接字。

[root@renwolecom ~]# ss | head -n 5
Netid  State  Recv-Q Send-Q Local Address:Port   Peer Address:Port
u_str  ESTAB  0      0       * 19098                 * 18222
u_str  ESTAB  0      0       * 19441                 * 19440
u_str  ESTAB  0      0       * 19440                 * 19441
u_str  ESTAB  0      0       * 19396                 * 19397

2.显示监听套接字

我们可以使用-l选项专门列出当前正在侦听连接的套接字,而不是列出所有的套接字。

[root@renwolecom ~]# ss -lt
State   Recv-Q Send-Q    Local Address:Port       Peer Address:Port
LISTEN  0      128                   *:http                  *:*
LISTEN  0      100           127.0.0.1:smtp                  *:*
LISTEN  0      128                   *:entexthigh            *:*
LISTEN  0      128       172.28.204.62:zabbix-trapper        *:*
LISTEN  0      128           127.0.0.1:cslistener            *:*
LISTEN  0      80                   :::mysql                :::*
LISTEN  0      100                 ::1:smtp                 :::*
LISTEN  0      128                  :::entexthigh           :::*

在这个示例中,我们还使用-t选项只列出TCP,稍后将对此进行详细说明。在后面的例子中,你会看到我将结合多种选择,以快速过滤掉,从而达到我们的目的。

3.显示进程

我们可以用-p选项打印出拥有套接字的进程或PID号。

[root@renwolecom ~]# ss -pl

Netid  State      Recv-Q Send-Q Local Address:Port     Peer Address:Port
tcp    LISTEN     0      128    :::http                :::*                 users:(("httpd",pid=10522,fd=4),("httpd",pid=10521,fd=4),("httpd",pid=10520,fd=4),("httpd",pid=10519,fd=4),("httpd",pid=10518,fd=4),("httpd",pid=10516,fd=4))

在上面的例子中我只列出了一个结果,没有进行进一步选项,因为ss的完整输出打印出超过500行到标准输出。所以我只列出一条结果,由此我们可以看到服务器上运行的各种Apache进程ID。

4.不解析服务名称

默认情况下,ss只会解析端口号,例如在下面的行中,我们可以看到172.28.204.62:mysql,其中mysql被列为本地端口。

[root@renwolecom ~]# ss
Netid State Recv-Q Send-Q   Local Address:Port      	Peer Address:Port
tcp   ESTAB 0      0 ::ffff:172.28.204.62:mysql ::ffff:172.28.204.62:38920
tcp   ESTAB 0      0 ::ffff:172.28.204.62:mysql ::ffff:172.28.204.62:51598
tcp   ESTAB 0      0 ::ffff:172.28.204.62:mysql ::ffff:172.28.204.62:51434
tcp   ESTAB 0      0 ::ffff:172.28.204.62:mysql ::ffff:172.28.204.62:36360

但是,如果我们指定-n选项,看到的是端口号而不是服务名称。

[root@renwolecom ~]# ss -n
Netid State Recv-Q Send-Q   Local Address:Port      	Peer Address:Port
tcp   ESTAB 0      0 ::ffff:172.28.204.62:3306  ::ffff:172.28.204.62:38920
tcp   ESTAB 0      0 ::ffff:172.28.204.62:3306  ::ffff:172.28.204.62:51598
tcp   ESTAB 0      0 ::ffff:172.28.204.62:3306  ::ffff:172.28.204.62:51434
tcp   ESTAB 0      0 ::ffff:172.28.204.62:3306  ::ffff:172.28.204.62:36360

现在显示3306,而非mysql,因为禁用了主机名和端口的所有名称解析。另外你还可以查看/etc/services得到所有服务对应的端口列表。

5.解析数字地址/端口

-r选项可以解析IP地址和端口号。用此方法可以列出172.28.204.62服务器的主机名。

[root@renwolecom ~]# ss -r
Netid  State  Recv-Q Send-Q        Local Address:Port      Peer Address:Port
tcp    ESTAB      0      0         renwolecom:mysql        renwolecom:48134

6.IPv4套接字

我们可以通过-4选项只显示与IPv4套接字对应的信息。在下面的例子中,我们还使用-l选项列出了在IPv4地址上监听的所有内容。

[root@renwolecom ~]# ss -l4
Netid State      Recv-Q Send-Q  Local Address:Port            Peer Address:Port
tcp   LISTEN     0      128                 *:http                       *:*
tcp   LISTEN     0      100         127.0.0.1:smtp                       *:*
tcp   LISTEN     0      128                 *:entexthigh                 *:*
tcp   LISTEN     0      128     172.28.204.62:zabbix-trapper             *:*
tcp   LISTEN     0      128         127.0.0.1:cslistener                 *:*

7.IPv6套接字

同样,我们可以使用-6选项只显示与IPv6套接字相关信息。在下面的例子中,我们还使用-l选项列出了在IPv6地址上监听的所有内容。

[root@renwolecom ~]# ss -l6
Netid State      Recv-Q Send-Q  Local Address:Port            Peer Address:Port
udp   UNCONN     0      0                  :::ipv6-icmp                 :::*
udp   UNCONN     0      0                  :::ipv6-icmp                 :::*
udp   UNCONN     0      0                  :::21581                     :::*
tcp   LISTEN     0      80                 :::mysql                     :::*
tcp   LISTEN     0      100               ::1:smtp                      :::*
tcp   LISTEN     0      128                :::entexthigh                :::*

8.只显示TCP

-t选项只显示TCP套接字。当与-l结合只打印出监听套接字时,我们可以看到所有在TCP上侦听的内容。

[root@renwolecom ~]# ss -lt
State       Recv-Q Send-Q    Local Address:Port               Peer Address:Port
LISTEN      0      128                   *:http                          *:*
LISTEN      0      100           127.0.0.1:smtp                          *:*
LISTEN      0      128                   *:entexthigh                    *:*
LISTEN      0      128       172.28.204.62:zabbix-trapper                *:*
LISTEN      0      128           127.0.0.1:cslistener                    *:*
LISTEN      0      80                   :::mysql                        :::*
LISTEN      0      100                 ::1:smtp                         :::*
LISTEN      0      128                  :::entexthigh                   :::*

9.显示UDP

-u选项可用于仅显示UDP套接字。由于UDP是一种无连接的协议,因此只运行-u选项将不显示输出,我们可以将它与-a-l选项结合使用,来查看所有侦听UDP套接字,如下所示:

[root@renwolecom ~]# ss -ul
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port
UNCONN     0      0              *:sunwebadmins                 *:*
UNCONN     0      0              *:etlservicemgr                *:*
UNCONN     0      0              *:dynamid                      *:*
UNCONN     0      0              *:9003                         *:*
UNCONN     0      0              *:9004                         *:*
UNCONN     0      0      127.0.0.1:terabase                     *:*
UNCONN     0      0              *:56803                        *:*

10. Unix套接字

-x选项只能用来显示unix域套接字。

[root@renwolecom ~]# ss -x
Netid State Recv-Q Send-Q                    Local Address:Port Peer Address:Port
u_str ESTAB 0      0 /tmp/zabbix_server_preprocessing.sock 23555           * 21093
u_str ESTAB 0      0          /tmp/zabbix_server_ipmi.sock 20155           * 19009
u_str ESTAB 0      0 /tmp/zabbix_server_preprocessing.sock 19354           * 22573
u_str ESTAB 0      0 /tmp/zabbix_server_preprocessing.sock 21844           * 19375
...

11.显示所有信息

-a选项显示所有的监听和非监听套接字,在TCP的情况下,这意味着已建立的连接。这个选项与其他的组合很有用,例如可以添加-a选项显示所有的UDP套接字,默认情况下只有-u选项我们看不到多少信息。

[root@renwolecom ~]# ss -u
Recv-Q Send-Q Local Address:Port                 Peer Address:Port
0      0      172.28.204.66:36371                    8.8.8.8:domain
[root@renwolecom ~]# ss -ua
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port
UNCONN     0      0                 *:sunwebadmins                    *:*
UNCONN     0      0                 *:etlservicemgr                   *:*
UNCONN     0      0                 *:dynamid                         *:*
UNCONN     0      0                 *:9003                            *:*
UNCONN     0      0                 *:9004                            *:*
UNCONN     0      0         127.0.0.1:terabase                        *:*
UNCONN     0      0                 *:56803                           *:*
ESTAB      0      0      172.28.204.66:36371                     8.8.8.8:domain

12.显示套接字内存使用情况

-m选项可用于显示每个套接字使用的内存量。

[root@renwolecom ~]# ss -ltm
State   Recv-Q Send-Q  Local Address:Port Peer Address:Port
LISTEN  0      128                 *:http           *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      100         127.0.0.1:smtp           *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      128                 *:entexthigh     *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      128     172.28.204.62:zabbix-trapper *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      128         127.0.0.1:cslistener     *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      80                 :::mysql         :::*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      100               ::1:smtp          :::*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      128                :::entexthigh    :::*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)

13.显示TCP内部信息

我们可以使用-i选项请求额外的内部TCP信息。

[root@renwolecom ~]# ss -lti
State       Recv-Q Send-Q Local Address:Port         Peer Address:Port
LISTEN      0      128               *:chimera-hwm              *:* 	bbr cwnd:10
LISTEN      0      128               *:etlservicemgr            *:* 	bbr cwnd:10
LISTEN      0      128   172.28.204.66:27017                    *:* 	bbr cwnd:10
LISTEN      0      128       127.0.0.1:27017                    *:* 	bbr cwnd:10
LISTEN      0      128               *:dynamid                  *:* 	bbr cwnd:10
LISTEN      0      128               *:9003                     *:* 	bbr cwnd:10
LISTEN      0      128               *:9004                     *:* 	bbr cwnd:10
LISTEN      0      128               *:http                     *:* 	bbr cwnd:10
LISTEN      0      128               *:ssh                      *:* 	bbr cwnd:10
LISTEN      0      100       127.0.0.1:smtp                     *:* 	bbr cwnd:10
LISTEN      0      128               *:sunwebadmins             *:* 	bbr cwnd:10
LISTEN      0      128              :::ssh                     :::* 	bbr cwnd:10

在每个侦听套接字下面,我们可以看到更多信息。注意:-i选项不适用于UDP,如果您指定-u,而非-t,则不会显示这些额外的信息。

14.显示统计信息

我们可以使用-s选项快速查看统计数据。

[root@renwolecom ~]# ss -s
Total: 798 (kernel 1122)
TCP:   192 (estab 99, closed 81, orphaned 0, synrecv 0, timewait 1/0), ports 0

Transport Total     IP        IPv6
*         1122      -         -
RAW       1         0         1
UDP       0         0         0
TCP       111       59        52
INET      112       59        53
FRAG      0         0         0

这使我们能够快速看到已建立连接的总数,及各种类型的套接字的计数和IPv4或IPv6的使用情况。

15.基于状态的过滤器

我们可以指定一个套接字的状态,只打印这个状态下的套接字。例如,我们可以指定包括已建立, established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack监听和关闭等状态。以下示例显示了所有建立的TCP连接。为了生成这个,我通过SSH连接到了服务器,并从Apache加载了一个网页。然后我们可以看到与Apache的连接迅速转变为等待时间。

[root@renwolecom ~]# ss -t state established
Recv-Q Send-Q       Local Address:Port              Peer Address:Port
0      52           172.28.204.67:ssh              123.125.71.38:49518
0      0     ::ffff:172.28.204.67:http      ::ffff:123.125.71.38:49237
[root@renwolecom ~]# ss -t state established
Recv-Q Send-Q       Local Address:Port              Peer Address:Port
0      0            172.28.204.67:ssh            103.240.143.126:55682
0      52           172.28.204.67:ssh              123.125.71.38:49518
0      0     ::ffff:172.28.204.67:http      ::ffff:123.125.71.38:49262

16.根据端口号进行过滤

可以通过过滤还可以列出小于(lt),大于(gt),等于(eq),不等于(ne),小于或等于(le),或大于或等于(ge)的所有端口。

例如,以下命令显示端口号为500或以下的所有侦听端口:

[root@renwolecom ~]# ss -ltn sport le 500
State       Recv-Q Send-Q Local Address:Port        Peer Address:Port
LISTEN      0      128                *:80                     *:*
LISTEN      0      100        127.0.0.1:25                     *:*
LISTEN      0      100              ::1:25                    :::*

为了进行比较,我们可以执行相反的操作,并查看大于500的所有端口:

[root@renwolecom ~]# ss -ltn sport gt 500
State       Recv-Q Send-Q Local Address:Port        Peer Address:Port
LISTEN      0      128                *:12002                  *:*
LISTEN      0      128    172.28.204.62:10051                  *:*
LISTEN      0      128        127.0.0.1:9000                   *:*
LISTEN      0      80                :::3306                  :::*
LISTEN      0      128               :::12002                 :::*

我们还可以根据源或目标端口等项进行筛选,例如,我们搜索具有SSH源端口运行的TCP套接字:

[root@renwolecom ~]# ss -t '( sport = :ssh )'
State       Recv-Q Send-Q    Local Address:Port     Peer Address:Port
ESTAB       0      0         172.28.204.66:ssh     123.125.71.38:50140

17.显示SELinux上下文

-Z-z选项可用于显示套接字的SELinux安全上下文。 在下面的例子中,我们使用-t和-l选项来列出侦听的TCP套接字,使用-Z选项我们也可以看到SELinux的上下文。

[root@renwolecom ~]# ss -tlZ
State  Recv-Q Send-Q  Local Address:Port        Peer Address:Port
LISTEN 0      128                 *:sunrpc                 *:*
users:(("systemd",pid=1,proc_ctx=system_u:system_r:init_t:s0,fd=71))
LISTEN 0      5       172.28.204.62:domain                 *:*
users:(("dnsmasq",pid=1810,proc_ctx=system_u:system_r:dnsmasq_t:s0-s0:c0.c1023,fd=6))
LISTEN 0      128                 *:ssh                    *:*
users:(("sshd",pid=1173,proc_ctx=system_u:system_r:sshd_t:s0-s0:c0.c1023,fd=3))
LISTEN 0      128         127.0.0.1:ipp                    *:*
users:(("cupsd",pid=1145,proc_ctx=system_u:system_r:cupsd_t:s0-s0:c0.c1023,fd=12))
LISTEN 0      100         127.0.0.1:smtp                   *:*
users:(("master",pid=1752,proc_ctx=system_u:system_r:postfix_master_t:s0,fd=13))

18.显示版本号

-v选项可用于显示ss命令的特定版本信息,在这种情况下,我们可以看到提供ssiproute包的版本。

[root@renwolecom ~]# ss -v
ss utility, iproute2-ss130716

19.显示帮助文档信息

-h选项可用于显示有关ss命令的进一步的帮助,如果需要对最常用的一些选项进行简短说明,则可以将其用作快速参考。 请注意:这里并未输入完整列表。

[root@renwolecom ~]# ss -h
Usage: ss [ OPTIONS ]

20.显示扩展信息

我们可以使用-e选项来显示扩展的详细信息,如下所示,我们可以看到附加到每条行尾的扩展信息。

[root@renwolecom ~]# ss -lte
State  Recv-Q Send-Q Local Address:Port   Peer Address:Port
LISTEN 0      128                *:sunrpc *:*      ino:16090 sk:ffff880000100000 <->
LISTEN 0      5      172.28.204.62:domain *:*      ino:23750 sk:ffff880073e70f80 <->
LISTEN 0      128                *:ssh    *:*      ino:22789 sk:ffff880073e70000 <->
LISTEN 0      128        127.0.0.1:ipp    *:*      ino:23091 sk:ffff880073e707c0 <->
LISTEN 0      100        127.0.0.1:smtp   *:*      ino:24659 sk:ffff880000100f80 <->

21.显示计时器信息

-o选项可用于显示计时器信息。该信息向我们展示了诸如重新传输计时器值、已经发生的重新传输的数量以及已发送的keepalive探测的数量。

[root@renwolecom ~]# ss -to
State      Recv-Q Send-Q Local Address:Port      Peer Address:Port
ESTAB      0      52     172.28.204.67:ssh      123.125.71.38:49518timer:(on,406ms,0)
LAST-ACK   0      1      172.28.204.67:ssh    103.240.143.126:49603timer:(on,246ms,0)

总结:

现在你应该对ss有了初步的认识。如果你想使用ss命令快速检查有关套接字的各种信息,建议你查阅ss的相关手册。

使用shell脚本快速更新Linux CentOS服务器主机名

想要快速更改您的服务器主机名,那就使用这个简单的脚本吧。

1.创建脚本文件

$ vim /tmp/hostname.sh

添加以下内容:

#!/usr/bin/env bash
#!//renwole.com/archives/786

OLD_HOSTNAME="$( hostname )"
NEW_HOSTNAME="$1"

if [ -z "$NEW_HOSTNAME" ]; then
 echo -n "Please enter new hostname: "
 read NEW_HOSTNAME < /dev/tty fi if [ -z "$NEW_HOSTNAME" ]; then echo "Error: no hostname entered. Exiting." exit 1 fi echo "Changing hostname from $OLD_HOSTNAME to $NEW_HOSTNAME..." hostname "$NEW_HOSTNAME" sed -i "s/HOSTNAME=.*/HOSTNAME=$NEW_HOSTNAME/g" /etc/sysconfig/network if [ -n "$( grep "$OLD_HOSTNAME" /etc/hosts )" ]; then sed -i "s/$OLD_HOSTNAME/$NEW_HOSTNAME/g" /etc/hosts else echo -e "$( hostname -I | awk '{ print $1 }' )\t$NEW_HOSTNAME" >> /etc/hosts
fi

echo "Done."

2.赋予可执行权限并运行该脚本

$ cd /tmp/
$ chmod 755 hostname.sh
$ /tmp/hostname.sh
Please enter new hostname:renwole
Changing hostname from renwolecom to renwole...
Done.

修改完成。

3.查看核实是否成功修改

[root@1renwolecom ~]# hostname
renwole

已经生效。

Linux用户权限设置详细讲解

今天不是很忙,所以把Linux文件权限熟悉熟悉。下面咱就掰开揉碎了的说说linux文件权限那些事。

[root@renwole-com local]# ll

drwxr-xr-x. 15 root root  175 Nov 14 15:31 apache
lrwxrwxrwx.  1 root root    6 Nov 24 16:00 httpd -> apache
-rw-r--r--.  1 root root   66 Nov 24 16:47 index.html
srwx------.  1 www  www        0 11月  8 17:22 php.sock

文件类型:

+------------------------------------------------+
| -  |  开头表示文件				 |
| d  |  开头表示文件夹                           |
| l  |  开头表示软连接                           |
| b  |  开头表示设备文件里的可供存储的接口设备   |
| c  |  开头表示设备文件里面串行端口设备,如键盘 |
| p  |  FIFO                                     |
| s  |  套接字                                   |
+------------------------------------------------+

数字权限:

+-------------+
| 字符 |八进制|
|------|------|
| rwx  |  7   |
| rw-  |  6   |
| r-x  |  5   |
| r--  |  4   |
| -wx  |  3   |
| -w-  |  2   |
| --x  |  1   |
| ---  |  0   |
+-------------+

权限意义:

+--------------------------------------------------------------+
|  -  	   |  数值0  | 无任何权限			       |	
|r(read)   |  数值4  | 读取文件内容,如:读取文本的文字内容等。|
|w(write)  |  数值2  | 编辑、新增、修改文件的内容。	       |
|x(execute)|  数值1  | 具有被系统执行的权限。   	       |
+--------------------------------------------------------------+

以下为例:

drwxr-xr-x. 15 root root  175 Nov 14 15:31 apache

权限详解:

+------------------------------------------------+
|   d      |    rwx  	|    r-x    |    r-x	 |
|文件类型  | 所有者权限	|用户组权限 |其他用户权限|
+------------------------------------------------+
+--------------------------------------------------------------+
|   15   |  root |  root  |  175   |   Nov 14 15:31   | apache |
| 连接数 | 拥有者| 所属组 |文件大小| 文件最后修改日期 | 文件名 |
+--------------------------------------------------------------+

在权限分配中,都以rwx三个参数组合,且位置顺序无变化,无对应权限就用 – 代替。

改变文件属性和权限

chgrp:修改文件所属用户组
chown:修改文件所有者
chmod:改变文件权限

举例:

如果我想给一个文件夹所有权限:

$ chmod -R 777 renwoleblog

-R 表示继承该目录下的所有文件夹以文件

给一个shell脚本可执行权限:

$ chmod +x renwolecom.sh

+x 表示可执行权限,上述有讲到。

待完善中…

Ubuntu CentOS 7 源代码构建 Shadowsocks libev Servers

说明:本文相关配置和说明仅用于示例和操作指引,本站(任我乐)不对相关操作结果及由此产生的问题负责。

介绍:

Shadowsocks libev是目前唯一一个持续更新的版本,其他版本由于某些原因作者已经停止开发。Shadowsocks是一个轻量级的SOCKS5网络代理工具。与其他代理软件不同的是,Shadowsocks的流量被设计为从其他流量到第三方监控工具都难以分辨,并且能够将自己伪装成正常的直接连接。通过Shadowsocks传递的数据被加密,以提高安全性和隐私。

由于目前UbuntuCentOS没有Shadowsocks软件包,因此本指南将介绍如何从源代码构建Shadowsocks服务器。

说明:下面章节操作写了UbuntuCentOS的配置方案。本文概要说明在 CentOS 系统下的 Shadowsocks 配置。

1.安装 Shadowsocks-libev 服务器

项目地址://github.com/shadowsocks

更新系统存储库,下载并安装依赖扩展包:

CentOS 7.*:

$ yum update && yum upgrade -y
$ yum install epel-release -y
$ yum install -y gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto udns-devel libev-devel libsodium-devel mbedtls-devel git m2crypto c-ares-devel

Ubuntu 17.04:

$ apt-get update && apt-get upgrade -yuf
$ apt-get install -y --no-install-recommends gettext build-essential autoconf libtool libpcre3-dev asciidoc xmlto libev-dev libudns-dev automake libmbedtls-dev libsodium-dev git python-m2crypto c-ares-devel

在/mnt目录下载Shadowsocks Git模块:

$ cd /mnt
$ git clone //github.com/shadowsocks/shadowsocks-libev.git

Cloning into 'shadowsocks-libev'...
remote: Counting objects: 11147, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 11147 (delta 0), reused 3 (delta 0), pack-reused 11142
Receiving objects: 100% (11147/11147), 9.22 MiB | 71.00 KiB/s, done.
Resolving deltas: 100% (7305/7305), done.

$ cd shadowsocks-libev
$ git submodule update --init --recursive

开始安装:

$ ./autogen.sh
$ ./configure
$ make -j4 && make install

2.配置 Shadowsocks-libev 服务端

为 Shadowsocks 创建一个新的系统用户:

CentOS 7.*:

$ groupadd shadowsocks
$ useradd -g shadowsocks -s /bin/false shadowsocks

Ubuntu 17.04:

$ adduser --system --no-create-home --group shadowsocks

为配置文件创建一个新目录:

$ mkdir -m 755 /etc/shadowsocks-libev

创建Shadowsocks配置文件,将下面列出的内容粘贴到文件中:

$ vim /etc/shadowsocks-libev/shadowsocks.json

{
    "server":"My Server IP",
    "server_port":8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open": true
}

核心参数说明:

server:服务端监听地址(IPv4或IPv6)。
server_port:服务端端口,一般为443。
local_address:本地监听地址,缺省为127.0.0.1 可用-b参数设置。
local_port:本地监听端口,一般为1080。
password:用以加密的密匙。
timeout:超时时间(秒)。
method:加密方法。推荐使用AEAD算法。
fast_open:打开可以减少延迟。适用于系统内核kernel versions 3.7.1或更高版本。

3.优化 Shadowsocks libev 服务器

创建系统优化文件并将下面显示的内容粘贴到文件中。这些设置为Shadowsocks提供了最佳的内核配置。如果以前由于某种原因配置了系统内核设置,请确保不存在冲突。

$ vim /etc/sysctl.d/local.conf

fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1

net.ipv4.tcp_congestion_control = hybla

net.ipv4.tcp_congestion_control = cubic

可选:

建议开启BBR拥塞算法优化。请参阅《CentOS 7系统开启BBR拥塞算法优化TCP加速服务器网络》。

应用优化生效:

$ sysctl --system

4.创建一个Shadowsocks Systemd服务单元文件

Shadowsocks systemd服务允许守护进程在系统启动时自动启动并在后台运行。

$ vim /etc/systemd/system/shadowsocks.service

[Unit]
Description=Shadowsocks proxy server

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/shadowsocks.json -a shadowsocks -v start
ExecStop=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/shadowsocks.json -a shadowsocks -v stop

[Install]
WantedBy=multi-user.target

加入开机自起并启动:

$ systemctl daemon-reload
$ systemctl enable shadowsocks
$ systemctl start shadowsocks

5.为 Shadowsocks 客户端打开防火墙端口

根据您的偏好,您可以使用iptablesUFWFirewallD命令来完成本节:

Iptables:

$ iptables -4 -A INPUT -p tcp --dport 8388 -m comment --comment "Shadowsocks server listen port" -j ACCEPT

UFW:

$ ufw allow proto tcp to 0.0.0.0/0 port 8388 comment "Shadowsocks server listen port"

FirewallD:

$ firewall-cmd --permanent --zone=public --add-rich-rule=' rule family="ipv4" port protocol="tcp" port="8388" accept'
$ firewall-cmd --reload

ShadowSocks-libev 的服务端到目前为止已经完成安装。

关于Shadowsocks客户端的使用这里不在叙述。

使用 vnStat 查看 Linux Centos 7网卡实时带宽流量

介绍:

vnStat是一个用于LinuxBSD 基于控制台的网络流量监视器,用于保留所选接口的网络流量日志。它使用内核提供的网络接口统计信息作为信息源。这意味着vnStat实际上并不会嗅探任何流量,并且还可以确保轻松使用系统资源。
在本文中,我们将介绍如何在RHEL/CentOS linux发行版上安装和使用vnStat(网络流量监控器)。

vnstat功能:

  • 简单快速的安装和运行。
  • 通过系统重新引导收集统计数据。
  • 可以同时监视多个网络网卡接口。

输出选项:

  • 总计、每小时、每天、每周、每月、前10天。
  • 可选的png图像输出(使用libgd)。
  • 可以配置几个月来跟踪账单周期。
  • 最小的资源使用情况。
  • 较低的cpu使用率。
  • 可以在没有root权限的情况下使用。

1.安装:

$ yum -y install epel-release
$ yum -y install vnstat

一旦安装成功,默认配置适用于大多数人。默认监控eth0网络网卡接口上的数据流量。如果需要更改网络接口,则需要编辑 /etc/vnstat.conf 里面有详细相关参数。

2.启动vnstat服务并加入开机自启:

$ systemctl restart vnstat
$ systemctl enable vnstat

3.现在可以使用vnstat相关命令管理了

示例1:

$ vnstat
rx      /      tx      /     total    /   estimated
eth0: Not enough data available yet.
eth1: Not enough data available yet.

提示没有足够的数据显示,过一会再尝试:

$ vnstat
                      rx      /      tx      /     total    /   estimated
eth0:
    10月 '17       28.32 MiB  /    2.14 MiB  /   30.46 MiB  /   31.00 MiB
         today     28.32 MiB  /    2.14 MiB  /   30.46 MiB  /      41 MiB

eth1:
    10月 '17           0 KiB  /      32 KiB  /      32 KiB  /       0 KiB
         today         0 KiB  /      32 KiB  /      32 KiB  /      --

可以看到以上数据已经产生。

示例2:

查看某个网卡的带宽数据流量使用情况。

$ vnstat -i eth0
Database updated: Mon Oct 30 17:09:50 2017

eth0 since 2017年10月30日

       rx:  42.46 MiB      tx:  3.12 MiB      total:  45.59 MiB

monthly
                rx      |     tx      |    total    |   avg. rate
------------------------+-------------+-------------+---------------
10月 '17      42.46 MiB |    3.12 MiB |   45.59 MiB |    0.15 kbit/s
  ------------------------+-------------+-------------+---------------
estimated        44 MiB |       3 MiB |      47 MiB |

daily
                rx      |     tx      |    total    |   avg. rate
------------------------+-------------+-------------+---------------
    today     42.46 MiB |    3.12 MiB |   45.59 MiB |    6.04 kbit/s
------------------------+-------------+-------------+---------------
estimated        58 MiB |       4 MiB |      62 MiB |

4.更多显示命令可查看 --help 示例如下:

$ vnstat --longhelp
 vnStat 1.15 by Teemu Toivola 

Query:
      -q, --query           query database
      -h, --hours           show hours
      -d, --days            show days
      -m, --months          show months
      -w, --weeks           show weeks
      -t, --top10           show top 10 days
      -s, --short           use short output
      -ru, --rateunit       swap configured rate unit
      --oneline             show simple parseable format
      --exportdb            dump database in text format
      --importdb            import previously exported database
      --json                show database in json format
      --xml                 show database in xml format
Modify:
      --create              create database
      --delete              delete database
      -u, --update          update database
      -r, --reset           reset interface counters
      --sync                sync interface counters
      --enable              enable interface
      --disable             disable interface
      --nick                set a nickname for interface
      --cleartop            clear the top 10
      --rebuildtotal        rebuild total transfers from months
Misc:
      -i,  --iface          select interface (default: eth0)
      -?,  --help           short help
      -D,  --debug          show some additional debug information
      -v,  --version        show version
      -tr, --traffic        calculate traffic
      -l,  --live           show transfer rate in real time
      --style               select output style (0-4)
      --iflist              show list of available interfaces
      --dbdir               select database directory
      --locale              set locale
      --config              select config file
      --savemerged          save merged database to current directory
      --showconfig          dump config file with current settings
      --testkernel          check if the kernel is broken
      --longhelp            display this help

See also "man vnstat".

vnStat是一个不错的网卡流量查看软件,应用广泛,建议尝试使用。

Git 常用基本命令使用方法一览

1.创建版本库

$ git clone                      #克隆远程版本库
$ git init                       #初始化本地版本库

2.修改&提交

$ git status                     #查看状态
$ git diff                       #查看变更内容
$ git add .                      #跟踪所有改动过的文件
$ git add                        #跟踪指定的文件
$ git mv                         #文件改名
$ git rm                         #删除文件
$ git rm --cached                #停止跟踪文件但不删除
$ git commit -m "commit message" #提交所有更新过的文件
$ git commit --amend             #修改最后一次提交

3.查看提交历史

$ git log                        #查看提交历史
$ git log -p                     #查看指定文件的提交历史
$ git blame                      #以列表方式查看指定文件的提交历史

4.撤消

$ git reset --hard HEAD          #撤消工作目录中所有未提交文件的修改内容
$ git checkout HEAD              #撤消指定的未提交文件的修改内容
$ git revert                     #撤消指定的提交

5.分支与标签

$ git branch                     #显示所有本地分支
$ git checkout <branch/tag>      #切换到指定分支或标签
$ git branch                     #创建新分支
$ git branch -d                  #删除本地分支
$ git tag                        #列出所有本地标签
$ git tag                        #基于最新提交创建标签
$ git tag -d                     #删除标签

6.合并与衍合

$ git merge                      #合并指定分支到当前分支
$ git rebase                     #衍合指定分支到当前分支

7.远程操作

$ git remote -v                  #查看远程版本库信息
$ git remote show                #查看指定远程版本库信息
$ git remote add                 #添加远程版本库
$ git fetch                      #从远程库获取代码
$ git pull                       #下载代码及快速合并
$ git push                       #上传代码及快速合并
$ git push :<branch/tag-name>    #删除远程分支或标签
$ git push --tags                #上传所有标签

CentOS 7系统开启BBR拥塞算法优化TCP加速服务器网络

介绍:

BBR是Google在2016年9月份开源的一个优化网络拥堵的算法。类似于锐速、Zetatcp、Finalspeed等,BBR也是通过单边优化TCP从而在同样的网络环境下更加高效的利用带宽和降低延迟。介于Google强大的开发背景和Linux4.9内核对BBR的引入,BBR是必会成为未来网络加速的首选方案。本人实测GigsGigs新加坡的服务器在开启BBR后,速度从3MB/s左右提高到了20MB/s左右,效果明显。下面就介绍如何在Centos7系统环境下开启BBR。

1.更新系统(主要将系统的软件包更新到最新):

$ yum update -y

2.安装最新的Linux内核(我是直接使用Elrepo编译好的内核进行安装):

$ rpm --import //www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh //www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
$ yum --enablerepo=elrepo-kernel install kernel-ml

3.查看当前已安装的内核:

$ awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

系统会返回类似结果:

0 : CentOS Linux (4.13.9-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-693.5.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-769ef9902d8743958a40cb81db696433) 7 (Core)

4.把 CentOS Linux (4.13.9-1.el7.elrepo.x86_64) 内核设置为默认并重启系统:

$ grub2-set-default 0
$ reboot

5.查看内核是否设置成功:

$ cat /proc/version
Linux version 4.13.9-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)) #1 SMP Sun Nov 12 10:02:34 EDT 2017

6.设置 sysctl.conf:

$ vim /etc/sysctl.conf

加入或修改如下两行参数:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

执行如下命令以使以上修改生效:

$ sysctl -p
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

7.查看BBR是否正常启动:

$ lsmod | grep bbr
tcp_bbr                20480  7

若显示tcp_bbr说明BBR已经正常启动。

Linux CentOS常用的11个Yum命令

Yum是在Linux CentOS 上使用的软件包管理系统。它负责/etc/yum.repos.d/定义的源镜像存储库管理软件包以其依赖关系。

在这篇文章中,我们将介绍一些常用和有用的yum命令:

1.安装yum包:

$ yum install PACKAGE_NAME

2.取出yum包装:

$ yum remove PACKAGE_NAME

3.重新安装一个yum包:

$ yum reinstall PACKAGE_NAME

4.搜索yum包:

$ yum search PACKAGE_NAME

5.显示yum包的信息:

$ yum info PACKAGE_NAME

6.更新安装的yum包:

$ yum update

7.更新具体的yum包:

$ yum update PACKAGE_NAME

8.显示yum历史:

$ yum history

9.显示已启用的yum存储库的列表:

$ yum repolist

10.找出哪个yum包提供了一个特定的文件(例如:/usr/bin/nc)):

$ yum whatprovides "*bin/nc"

11.清除yum缓存:

$ yum clean all

完结。

vim 命令编辑 Hosts 文件 详细使用方法

用vim命令打开Hosts文件

$ vim /etc/hosts

按”i“键,进入编辑模式 按”Esc“键,退出编辑模式

按”Backspace“键,删除光标前一个字符
按”Delete“键,删除光标后一个字符
按”dd“键,删除当前行

按”yy“键,复制当前行
按”p“键,粘贴复制的内容到下一行

按”:wq“,保存退出
按”:x“,保存退出
按”:q!“,强行退出不保存

“上”键:光标移至上一行
“下”键:光标移至下一行
“左”键:光标移至左移一个字符
“右”键:光标移至右移一个字符

Home“键,光标移至当前行首
End“键,光标一直当前行尾

PgUp“,向上翻页
PgDn“,向下翻页