my blog my blog

Tag: Linux
Ubuntu下安装Intel 9260AC无线网卡教程

奶牛很久没有写ubuntu的文章了,虽然自己的服务器依然是使用ubuntu server,但是比较懒,也没有太多折腾,今天记录一下intel最新的9260ac无线网卡在ubuntu下的安装与使用。

Intel的中文支持页面更新还是有些缓慢,所以驱动程序我们可以在英文页面找到。Linux* Support for Intel® Wireless Adapters

官方页面给出的安装介绍如下

To install firmware:

    Copy the files into the distribution-specific firmware directory, /lib/firmware.
    If the directory does not work, consult your distribution documentation.
    If you configure the kernel yourself, make sure firmware loading is enabled.

首先是下载驱动程序:Intel 9260AC驱动

官方提到intel无线网卡驱动是依赖iwlwifi来加载驱动的,但是安装官方的方法将驱动文件解压后拷贝至/lib/firmware文件夹中重启是无法实现加载的,至少奶牛这里不行,也许你们把内核更新到最新大概可能会实现自动识别吧,但是奶牛把自己折腾的过程分享下。

DeviceKernelsFirmware
Intel® Wireless-AC 92604.14+iwlwifi-9260-th-b0-jf-b0-34.618819.0.tgz

官方的说明是内核要在4.14+,现在内核已经到了4.15RC版本了,4.14也更新到了4.14.10,奶牛第一次是安装的4.14版本内核,结果发现设备可以识别了,但是无法使用。然后找到iwlwifi的支持页面

页面中又说到iwlwifi-fixes with fixes for the current kernel release cycle,所以我们又去看iwlwifi-fixes,在2017-12-05这天更新了内容iwlwifi: add new cards for 9260 and 22000 series

好吧,看样子内核需要在12.05之后,奶牛这里安装的是4.14.10,看日期4.14.04也是12.05日,所以就索性当4.14.04之后的内核版本才支持吧。更新内核也很简单

mkdir kernel
cd kernel
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14.10/linux-headers-4.14.10-041410_4.14.10-041410.201712291810_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14.10/linux-headers-4.14.10-041410-generic_4.14.10-041410.201712291810_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.14.10/linux-image-4.14.10-041410-generic_4.14.10-041410.201712291810_amd64.deb
dpkg -i *.deb

奶牛这里是安装的64位ubuntu操作系统,32位操作系统的同志自己去http://kernel.ubuntu.com/~kernel-ppa/mainline下面找对应的内核版本就好了。

更新内核后重启系统,安装wicd进行无线网卡管理,不要问奶牛为啥要装wicd,因为奶牛发现系统自带的那个管理器还是识别不了。。。好吧,就此折腾完毕。

 

 

关于iptables过滤关键词网站的原理和方法解读

服务器上有时候难免做些限制,比如说一个游戏加速器可能会禁止用来网站访问,但是问题来了,我们并不能简单的禁止一个80或者443来达到目的,因为有些游戏会从网站上去获取一些信息,比如现在最火的绝地求生大逃杀,吃个鸡却要先从一个网页进行登录,所以禁止80/443端口的方案我们可以直接否掉,奶牛的方法是用iptables进行关键词和网站过滤。

iptables过滤关键词网站的原理解读

INPUT,OUTPUT,FORWARD选哪个?

使用iptables过滤关键词和网站,我们需要对进出服务器的流量都进行过滤,当然也有人建议在传输层过滤,那奶牛就来谈谈自己的理解。首先INPUT,OUTPUT,FORWARD三个分别对应进、出、传输。如果我们在FORWARD过滤,应该可以达到预期效果,但是如果我们的服务器是用作转发的呢?比如一个请求发送过来,我们允许INPUT进入,然后我们的转发服务器会先将请求转发出去,再接收转发内容,最后在转发回程的过程中过滤拦截,这样子,服务器的流量带宽资源就会被浪费,也许你会说在接收到请求之后关键词和网站就已经过滤了,其实不然,很多关键词是包含在请求获得的内容中的,所以不可能在转发之前就过滤掉,我们需要的结果是在转发之前过滤掉。那么我们就用INPUT进行限制?通过实测,发现单单用INPUT也不能过滤干净,奶牛的理解是INPUT不会拒绝请求的结果,所以我们还需要和OUTPUT配合使用。

DROP,REJECT选哪个?

奶牛选择的是DROP。我们说说DROP和REJECT的区别,当我们使用REJECT的时候,如果拒绝请求,在iptables中输入

iptables -L -nv

可以看到拒绝的请求会reject-withicmp-port-unreachable,也就是会通过一个icmp包来告诉目标请求被拒绝了,这个资源也是属于浪费的,如果我们直接用DROP丢弃,则不会有这个回包。

iptables过滤关键词网站的方法

首先备份好我们的iptables规则,避免操作失误。备份和还原的命令如下:

iptables-save > iptables_origin_rules
iptables-restore > iptables_origin_rules

然后我们的规则这样写

iptables -A INPUT -m string --string "xxx.com" --algo bm --to 65535 -j DROP
iptables -A OUTPUT -m string --string "xxx.com" --algo bm --to 65535 -j DROP

其中的xxx.com就是关键词,可以写网站域名,也可以写关键词,但是关键词一定要想好,否则可能会导致很多东西都无法访问的。如果规则写错了,可以通过命令删除规则:

iptables -D INPUT -m string --string "xxx.com" --algo bm --to 65535 -j DROP
iptables -D OUTPUT -m string --string "xxx.com" --algo bm --to 65535 -j DROP

过滤需谨慎,特别是一些国cdn、公共库、ssl、dns等一定要谨慎处理,否则可能会导致很多服务无法访问严重后果。

黑群辉Docker折腾记

 

同事年前入了一个群晖NAS,前两天看H大大也入了群晖,好吧,奶牛就黑一个吧,淘宝买了一个黑群晖机,2*4T西数红盘,开始折腾。

黑群晖是要有引导U盘来带着启动的,机器自带,无非就是改改vid pid什么的小操作,不讨论,装系统也不讨论。奶牛想讨论下Docker,对Docker!

系统软件版本:DSM 5.2-5592

NAS> docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): a263667
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): a263667
OS/Arch (server): linux/amd64
NAS> cat /proc/version
Linux version 3.10.35 (root@builder) (gcc version 4.7.3 20130102 (prerelease) (crosstool-NG 1.18.0) ) #1 SMP Mon Aug 3 15:44:49 UTC 2015

群晖就是个linux系统,所以回归老本行。奶牛也是这周才接触Docker的,这个虚拟机很给力,奶牛欣喜之极,因为比起VM啊KVM之类的虚拟机,这个简直就是资源压缩机,因为共用系统的内核,所以,一个ubuntu的bash才耗费几M的系统资源,而且只要有个镜像,自己创建一个容器,可以算是无所不能了吧。对于网上有的那些迅雷远程下载xware啊,迅雷快鸟加速啊,还有那些bt下载奶牛不想讨论,没什么意思,因为有一个虚拟机系统了,你可以完成linux下的所有操作了。

先说说这个版本Docker的一个bug,就是在pull官方源的时候有的源没法在网页版中pull,提示命令执行错误。奶牛在6.X版本中测试发现没有此问题。不过,这都是小事儿不是?

开启NAS的ssh,直接命令行上去,默认的用户名和密码就是你设置的用户名和密码,而我们需要的是root,root密码其实也是你用户设置的那个密码。。。。汗。用root登录,可以直接用linux命令来操作docker。奶牛现在跑着kcptun来不间断代理ss,效果不错。再实现什么功能呢?还没想好,现在是只做了ddns到自有域名然后设置好了kcptun的客户端。这个Docker真的是太强大了,强烈推荐。

  
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学得很渣,但是很多东西查到了还是很好学习的,记录下。

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元每年,需要者联系,联系方式见杂货铺。

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  

 

Linux下挂载samba网络共享硬盘

 

首先确认安装了cifs-utils,例如ubuntu下执行

  1. apt-get install cifs-utils

执行完成后即可进行挂载了

  1. mount -t cifs -o username="guest",password="guest" //192.168.11.1/download /root/download/  

其中-t cifs指定类型 -o设置选项,然后username和password在为空的时候用guest来完成,之后就是samba服务器和本地目录了,对于Netgear R7500可以在linux下直接通过如下挂载来完成共享文件。

BeagleBone-Black的sources.list备份
  1. vim /etc/apt/sources.list 
  2.  
  3. deb  http://mirror.bit.edu.cn/debian/ wheezy main contrib non-free 
  4. #deb-src http://ftp.us.debian.org/debian/ wheezy main contrib non-free 
  5.  
  6.  
  7. deb  http://mirror.bit.edu.cn/debian/ wheezy-updates main contrib non-free 
  8. #deb-src http://ftp.us.debian.org/debian/ wheezy-updates main contrib non-free 
  9.  
  10.  
  11. #deb-src  http://mirror.bit.edu.cn/debian/ wheezy/updates main contrib non-free 
  12. #deb-src http://security.debian.org/ wheezy/updates main contrib non-free 
  13.  
  14.  
  15. #deb http://ftp.debian.org/debian wheezy-backports main contrib non-free 
  16. ##deb-src http://ftp.debian.org/debian wheezy-backports main contrib non-free 
  17.  
  18. deb [arch=armhf] http://debian.beagleboard.org/packages wheezy-bbb main 
  19. #deb-src [arch=armhf] http://debian.beagleboard.org/packages wheezy-bbb main 

 

Linux系统中Lightdm开启的VNC会话不能保持的解决方案

 

在奶牛的BeagleBone-Black里面装的Debian系统+openbox桌面,用lightdm管理的(好吧,都是默认的),但是发现在lightdm.conf中将vnc启用后vnc是可以用了,但是每次链接都产生一个新的会话,退出后会话自动毁灭,不能长久保持,这让奶牛很烦恼,因为要想用bb-black来当离线下载机,这样子可不行,还指望着vnc来长期管理呢。好吧,说说处理方法,首先将lightdm.conf中的vnc禁用。

  1. vim /etc/rc.local 
  2. #!/bin/sh -e 
  3. # rc.local 
  4. # This script is executed at the end of each multiuser runlevel. 
  5. # Make sure that the script will "exit 0" on success or any other 
  6. # value on error. 
  7. # In order to enable or disable this script just change the execution 
  8. # bits. 
  9. # By default this script does nothing. 
  10. su debian -c "vncserver -name debian -depth 16 -geometry 1366x768 -alwaysshared" 

这样子就相当于开机用debian用户启动vnc服务器,端口是5901,然后我们

  1. . /etc/rc.local 

来执行一次,然后设置debian用户的vnc密码,设置完成后

  1. ln -s /etc/rc.local /etc/rc5.d/S07rc.local 

这样可以防止rc.local在开机时候不被执行。

linux普通用户挂载U盘无读写权限问题的处理方法

 

这两天折腾BeagleBone-Black,发现自己的linux知识真的忘了好多,用起来都不那么顺手了,啥都得查。遇到一个矛盾,chrome在root状态下无法挂载U盘,系统启动后user又无权限读写优盘。解决方案就是通过fstab来直接挂载,通过用户的id和组id来让用户可以正常使用。ps,最好用uuid方式,个人觉得这样子挂载哪个设备都比较有数,可以设置不同的设备挂载到不同的文件夹什么的。