致更好的自己。
分类目录归档:GENERAL
OpenWrt访客WiFi植入广告
好吧,这确实是一个很奇怪的需求。
1.设置访客WiFi
见http://www.right.com.cn/forum/thread-173844-1-1.html
其中网络接口的IP地址设置为172.16.68.1
2.配置Privoxy
Privoxy是一款不进行网页缓存且自带过滤功能的代理服务器,针对HTTP、HTTPS协议。通过其过滤功能,用户可以保护隐私、对网页内容进行过滤、管理Cookie,以及拦阻各种广告等。Privoxy可以单机使用,也可以应用到多用户的网络。它也可以与其他代理相连,更可以突破互联网审查。
安装privoxy:
opkg install privoxy
配置privoxy:
cd /etc/privoxy/ vi config
编辑config:
高亮行为需要添加/修改的
confdir /etc/privoxy logdir /var/log filterfile default.filter filterfile user.filter logfile privoxy actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on. actionsfile default.action # Main actions file actionsfile user.action # User customizations listen-address 172.16.68.1:8118 toggle 1 enable-remote-toggle 1 enable-remote-http-toggle 0 enable-edit-actions 1 enforce-blocks 0 buffer-limit 4096 forwarded-connect-retries 0 accept-intercepted-requests 1 allow-cgi-request-crunching 0 split-large-forms 0 keep-alive-timeout 300 socket-timeout 300 permit-access 172.16.68.0/24 debug 1 # show each GET/POST/CONNECT request debug 4096 # Startup banner and warnings debug 8192 # Errors - *we highly recommended enabling this* #admin-address privoxy-admin@example.com #proxy-info-url http://www.example.com/proxy-service.html
在user.filter中添加要注入的脚本:
FILTER: guest-wifi s|</head>|<script type="text/javascript" src="http://example.com/ad.js"></script>$0|
在user.action中调用user.filter的规则:
{+filter{guest-wifi}} .*
3.将流量转发到Privoxy
下面的指令会将所有来自172.16.68.*,访问80端口的请求转发到位于8118端口的privoxy:
iptables -t nat -A PREROUTING -s 172.16.68.1/24 -p tcp --dport 80 -j REDIRECT --to-ports 8118
4.后记
- privoxy会导致访问延迟。
- privoxy官方文档中明确指出不支持https流量的拦截。
Linux搭建CS:GO服务器
0.前言
本文用到的系统:Ubuntu 16.04 32位
撰写本文时CS:GO服务端的大小约为16G,请确保服务端有足够空间。
1.安装SteamCMD
Steam命令行版客户端(SteamCMD)是一个命令行版本的Steam客户端。它的主要用途是在一个命令行界面的Steam客户端上安装和更新各种可用的专用服务端。它适用于使用SteamPipe内容分发系统的游戏。所有游戏已经从旧的半条命专用服务器更新工具迁移到了SteamCMD。
为steamcmd创建一个用户并切换过去(root用户下):
useradd -m steam su - steam
创建目录:
mkdir Steam cd Steam
下载并解压:
curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
运行:
./steamcmd.sh
等待下载完成,直到出现Steam>,SteamCMD环境安装完成。
2.安装CS:GO
以下指令均在SteamCMD(Steam>)环境下执行
选择安装目录:
(下面的指令将csgo服务器安装在了当前目录下的csgoserver目录,也就是Steam/csgoserver)
force_install_dir ./csgoserver/
匿名登陆:
login anonymous
安装:
app_update 740 validate
(如果需要升级请使用app_update 740,升级前务必选择安装目录)
安装完成后,按Ctrl+C退出SteamCMD,然后执行下面的指令即可以休闲模式启动沙漠2服务器:
./csgoserver/srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2
但因为还未关联token,服务器只能通过内网连接。要想通过公网连接并在社区服务器列表中显示出来,你需要申请一个token并填入启动参数。
token申请地址:http://steamcommunity.com/dev/managegameservers
在上面的指令中追加下面的参数即可在公网中启动:
+sv_setsteamaccount 你申请到的token(登陆令牌) -net_port_try 1
另外附上其它几种模式的启动指令:
#休闲模式 ./csgoserver/srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2 #竞技模式 ./csgoserver/srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 #军备竞赛模式 ./csgoserver/srcds_run -game csgo -console -usercon +game_type 1 +game_mode 0 +mapgroup mg_armsrace +map ar_shoots #爆破模式 ./csgoserver/srcds_run -game csgo -console -usercon +game_type 1 +game_mode 1 +mapgroup mg_demolition +map de_lake #死亡竞赛模式 ./csgoserver/srcds_run -game csgo -console -usercon +game_type 1 +game_mode 2 +mapgroup mg_allclassic +map de_dust
所有游戏类型和模式都可以在./csgoserver/csgo/gamemodes.txt中找到
3.连接至服务器
开始游戏 – 浏览社区服务器 – 收藏夹 – 添加服务器 – 输入你服务器的公网IP地址
如果是在家开服请自行搜索端口映射相关教程。
4.长久运行
如果需要长久运行服务器,请使用screen。没有安装的可以使用下面的指令安装(root用户下):
apt install screen
在启动CSGO之前运行screen -S csgoserver,然后启动CSGO。接着你就可以关闭终端,服务端会继续在远程服务器上运行。
当你需要操作服务端时,运行screen -r csgoserver,便会回到服务端进程中去。
5.可能遇到的错误
- Failed to open dedicated.so (libstdc++.so.6: cannot open shared object file: No such file or directory)
需要安装lib32stdc++6包,使用下面的命令来安装:
apt install lib32stdc++6
解决Chrome辅助框架CPU占用过多
最近无意中发现chrome在仅开启一个标签页的情况下也有相当可观的cpu占用,
遂打开任务管理器查看,发现一个名叫“辅助框架”的进程:
该进程并没有写明属于哪个插件,于是只好一个一个排除。最后发现在禁用Smartshot后cpu占用恢复了正常,可以确定该作者无良的植入了挖矿相关的代码。
解决chrome卡在”正在等待存入缓存”
最近访问少数网站时chrome会卡在”正在等待存入缓存”过程,30秒到2分钟不等,极大地影响了浏览体验。
搜寻一番后发现导致该问题的原因很多,在此简单列举一下:
- 因网络原因导致网页资源加载速度极慢,在加载过程中刷新页面
- SSD没装驱动
- 硬盘使用率100%,常出现在大量4k读写
上述问题没有特定的解决方案,只能尝试一个一个去排查。
解决openwrt下的redsocks2启动报错
启动redsocks2时出现下列错误:
[root@PandoraBox:/root]#/etc/init.d/redsocks2 restart file parsing error at line 16: invalid token order file parsing error at line 16: unclosed section file parsing error at line 16: stale key_token file parsing error at line 16: stale value_token [root@PandoraBox:/root]#
解决方案:修改透明代理设置 – 密码,在两侧加上引号。如图所示:
使用mjpg-streamer搭建网络摄像头
接入摄像头,查看是否已连接:
lsusb
如上图显示有”Camera”字样即表示连接成功。
安装依赖:
sudo apt update sudo apt install cmake libjpeg8-dev imagemagick libv4l-dev
下载/编译:
git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimental make sudo make install
启动:
sudo ./mjpg_streamer -i "input_uvc.so -y" -o "output_http.so -w www"
看到如下输出:
现在访问IP:8080即可看到摄像头实时画面:
在openwrt上安装php
1.安装
确保你已经配置好了opkg源。
安装php及其扩展:
opkg update opkg install php5 php5-cgi php5-mod-mcrypt php5-mod-curl php5-mod-hash php5-mod-json
2.配置
编辑php.ini:
vi /etc/php.ini
将
;extension = curl.so ;extension = hash.so ;extension = json.so
三项前面的;去掉以启用扩展
并将;date.timezone =修改为date.timezone = Asia/Shanghai。
如果你没有设置过系统时区的话还需要设置系统时区。打开LUCI界面,进入系统 – 系统属性 – 基本设置中将时区改为Asia/Shanghai。
最后你需要安装一个时区信息软件包,否则系统无法识别时区。
opkg install zoneinfo-asia
3.可能遇到的问题
1.can’t load library ‘libpcre.so.0’
当我按照上述步骤安装/配置完成后访问浏览器却得到了一个无情的502,运行/usr/bin/php-cgi得到下面的错误:
/usr/bin/php-cgi: can't load library 'libpcre.so.0'
搜索一番后得出以下解决方案:
ln -s /usr/lib/libpcre.so.1 /usr/lib/libpcre.so.0
2.No input file specified.
解决了502,再次访问浏览器却提示”No input file specified.”。继续搜索后得出下面的方案:
编辑php.ini,注释掉doc_root=”/www”这一行(在前面加上;)
大功告成!现在访问浏览器一切正常。
安装迅雷精简版出现[已经阻止此发布者在你的计算机上运行软件]
今天打算在机子上装一个迅雷精简版,结果可能是太久未更新导致证书过期的缘故,win10弹出了如下提示阻止安装:
网上给出的解决方案如下:
在属性里如下设置,应用即可。
然而似乎并没有解决问题,又出现了“管理员已阻止你运行此应用。有关详细信息,请与管理员联系。”:
带着疑惑,我查看了证书信息:
。。。。。。
可以啊迅雷,良心产品直接吊销证书?也亏你们想得出来
又继续一番查找之后,找到了真正的解决方案:
右键WIN图标,选择命令提示符(管理员):
同时复制安装文件的路径:
在新打开的命令提示符窗口里输入下面的命令:
cd 安装文件路径
最后输入文件名全名:
回车,成功~
openwrt科学那啥排查记
前两天路由器的科学那啥突然挂了,后来花了很大功夫才解决好,亦在此记录一下。
1.服务端篇
很奇怪,shadowsocks怎么都连不上服务器。看日志是“服务器拒绝了连接”,可防火墙又一切正常。仔细检查后发现服务端的地址设置为一个域名,而openwrt上我却是用IP连接的,将服务端地址也换为服务器IP即可。
2.Pdnsd篇
老问题了,pdnsd地址没填对。传送门:https://www.zhoushangren.com/archives/521
3.ChinaDNS篇
很诡异的,chinadns突然无法解析了!国内国外域名全部无法解析!在考虑了多种可能后得出结论:应该是自动更新脚本更新的IP段文件出了问题,将chinadns_chnroute.txt恢复为出厂版本即可。
(附上那段更新脚本:
curl ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | grep ipv4 | grep CN | awk -F\| ‘{ printf(“%s/%d\n”, $4, 32-log($5)/log(2)) }’ > /etc/chinadns_chnroute.txt
4.openwrt系统篇
按理说现在也折腾的差不多了啊,可是还是有问题:一开始还连的上,等个半分钟左右就掉线了。这实在是令我百思不得其解,直到最后发现原来罪魁祸首是【虚拟WAN接口】!
如图所示,虽然我关闭了它,但是虚拟WAN接口数量还是2,而最低在线接口数是1。这就触发了一个奇怪的bug:系统要求最少要有一个接口在线,而我又根本没有开启这个功能。于是WAN便会不断重连以尝试使那个不存在的接口在线,如此反复…
解决方案也很简单,将虚拟WAN接口数量改为0即可~