再战DNS域名解析污染

没有评论

2016年12月23日 at 上午10:40分类:建站

tips:

windows下清除dns缓存:

C:\Users\Administrator>ipconfig/flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。

openwrt下清除dns缓存:
root@Open743:~# /etc/init.d/dnsmasq restart

DNS域名请求和响应报文为明码UDP报文(端口为53),中间设备很容易对域名解析的返回结果进行修改,从而使你访问不到你想要访问的网站。

 

正文:

原来在用VPN时使用openwrt的dnsmasq将国外域名列表指向8.8.8.8的google服务器进行解析:
使用DNSMASQ解决OPENWRT的DNS解析问题

 

此种方法在使用VPN时正常,国外IP(含8.8.8.8)全走加密VPN,包括TCP、UDP,中间设备无法对内容进行修改。

 

但此种方法在使用SSR时发现失效,原因是没有将SSR的UDP隧道转发打开,SSR缺省只对TCP报文进行透明代理,UDP报文在中间被劫持修改

上图第一次ping是没打开隧道转发时的IP地址,返回一个随机的垃圾IP(意大利的地址),第二次是打开隧道转发后的正确IP。

 

隧道转发打开方式

openwrt上安装openwrt-ssr

打开UDP转发:

在WAN设置中取消“使用端局通告的DNS服务器”:

在DNS配置中设置“DNS转发”为“127.0.0.1#5300”:

按上述设置可以正确解析所有域名,但是有个问题,国内的域名也交给google去解析了,导致访问淘宝变成国际淘宝网站。

 

问题1:能不能不开启隧道,用UDP中继服务器中转DNS请求?

目前测试,从openwrt上发出的dns不理会UDP中继服务器设置,直接不走代理出去,但是局域网内其他的计算机发出的UDP报文会转发到UDP中继服务器。因此如果不开隧道,开UDP中继服务器,可以将局域网中的计算机的dns手动设置成8.8.8.8,也可以防止DNS污染:

 

问题2:如何设置使国内域名走国内DNS,国外走google的DNS?

在openwrt上打开UDP隧道,不要修改WAN和DNS配置,修改openwrt上/etc/dnsmasq.d/foreign_list.conf文件,将8.8.8.8改为127.0.0.1#5300

重启dnsmasq:

/etc/init.d/dnsmasq restart

 

另发现SS的openwrt客户端在域名污染情况下仍然可以正常使用,而SSR必须开隧道,具体原因待查。

【补充】

新版本SSR已经修复了在域名污染情况下无法使用的问题,已经不需要上述步骤。

新版SSR for OpenWRT地址:

http://github.com/ywb94/openwrt-ssr

在github上新建项目

没有评论

2016年12月22日 at 上午11:14分类:软件

1、注册及创建项目

首先在github上通过邮箱注册账号,账号激活后建立一个项目版本库

项目创建后提示如何上传代码:

2、建立本地仓库

启动git-gui,创建新版本库:

将代码拷贝到上述目录,然后在gui中点击“重新扫描”按钮,可以发现新的代码文件:

3、同步上传代码

先创建ssh key,点git中“帮助”-“show ssh key”,创建key,这里要输入一个口令,需记住:

拷贝此key,粘贴到github中的key设置页面:

验证是否配置成功 :
ssh -T git@github.com,需输入上面创建ssh key时输入的口令:

设置远端版本库,选“远端”-“add”:

在git中缓存改动并提交本地版本后,点击“上传”按钮:

输入github的用户名和密码,开始上传:

上传完成,在github上可以看到你提交的代码了:

 

如果提交代码时需要输入用户名和密码,在命令行输入命令:
git config --global credential.helper store

下一次会记住用户名和密码

删除tag:

本地:

git tag -d <tagname>

远端:

git push origin --delete tag <tagname>

编译ssr for openwrt 版本

没有评论

2016年12月21日 at 上午11:54分类:建站

openwrt sdk 交叉编译

进入sdk目录:
ubuntu:~/t/openwrt/bin/ar71xx/OpenWrt-SDK-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64$
进入package目录
$ cd package/
获取源码:
$ git clone -b shadowsocksR https://github.com/harveyhu2012/openwrt-shadowsocks.git
$ git clone -b shadowsocksR https://github.com/harveyhu2012/openwrt-dist-luci.git
配置:
$ cd ..
$ make menuconfig
选择shadowsocksR-libev-spec、luci-app-shadowsocksR-spec
编译:
$ make V=99 -j2
生成后的ipk在:
openwrt/bin/ar71xx/OpenWrt-SDK-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/bin/ar71xx/packages/base

另一个版本
获取源码:
$ git clone -b shadowsocksR https://github.com/etnperlong/openwrt-shadowsocks.git
$ git clone -b shadowsocksR https://github.com/etnperlong/openwrt-dist-luci.git
注:在https://github.com/etnperlong/openwrt-shadowsocks上同步的是以前的shadowsocks-libev代码,如果要同步最新代码,需修改makefile文件:

到https://github.com/breakwa11/shadowsocks-libev网站找最新分支:

点红框链接进去,可以发现版本标识SHA:

修改:

PKG_SOURCE_VERSION:=d022e3177c4bbcd3a13dbb41aa3c2a7dbf50a672

版本号也升下级:

PKG_VERSION:=2.4.9

另外新版本依赖pcre,需修改:

DEPENDS:=$(3) +libpcre +libpthread

利用rsync进行网站之间的目录同步

没有评论

2016年12月19日 at 下午2:24分类:建站

功能:将服务端的目录定时同步到各个客户端
一、服务端(被同步端)配置
1、安装rsync
一般centos自带rsync,如果没有,用yum安装rsync以及xinetd
#yum install rsync xinetd
xinetd为守护进程,如果不安装xinetd也可以通过命令行启动rsync服务端
2、开启rsync
开启服务
#vim /etc/xinetd.d/rsync
disable = no //把disable = yes改成no
或者执行以下命令也能开启服务
#chkconfig rsync on
3、配置rsync
# vi /etc/rsyncd.conf (这个文件如果不存在自己创建)
#Global Settings
#以什么身份运行rsync
uid = root
gid = root
#不使用chroot
use chroot = no
#最大连接数
max connections = 20
#密码文件位置,认证文件设置,设置用户名和密码
secrets file = /etc/rsyncd.secrets
#指定rsync的日志文件,而不将日志发送给syslog
log file = /var/log/rsyncd.log
#指定rsync的pid文件
pid file = /var/run/rsyncd.pid
#指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock
lock file = /var/run/rsync.lock
comment = hello world
#欢迎信息文件名称和存放位置(此文件没有,可以自行添加)
#motd file = /etc/rsyncd.motd
#
# 这里是认证的模块名,在client端需要指定
[backup]
# 需要做镜像的目录
path = /var/www/default
# 授权帐号。认证的用户名,如果没有这行,则表明是匿名,多个用户用,分隔
auth users = rsync
# yes只读 值为NO意思为可读可写模式,数据恢复用NO
read only = yes
#允许访问的服务器IP
hosts allow = 192.168.3.128
#黑名单
hosts deny = *
# 允许列文件
list = true
# 可以忽略一些无关的IO错误
#ignore errors
#忽略的目录
#exclude = cache/111/ cache/222/

设置访问(认证)的用户名密码

# vi /etc/rsyncd.secrets
#用户名:密碼
rsync:111111
给文件正确的权限
# chown root:root /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets #(必须是600)

 

4、启动

一般通过xinetd守护进程启动:

service xinetd restart

也可以通过命令行直接启动:

/usr/bin/rsync --daemon

 

二、客户端同步

先创建密码文件

#vi /etc/rsyncd.pas
111111
注意,客户端的密码文件只需要密码,而不需要用户名!密码和服务器一致

更改文件权限:
#chmod 0600 /etc/rsyncd.pas

执行同步命令:

rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.pas   rsync@xxxx.net::backup /var/www/default

xxxx.net为服务端网站名称

rsync为登录用户名

backup 为指定同步的模块(服务端配置文件中的backup名称)

同步的本地路径为/var/www/default

-vzrtopg里的v是verbose,z是压缩传输,r是recursive,topg都是保持文件原有属性如属主、时间的参数。
u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时钟的同步。
–progress是指显示出详细的进度情况,
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。

将命令放入crontab中可以定时和服务器目录同步:

#crontab -e

30 6 * * * /usr/bin/rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.pas   rsync@xxxx.net::backup /var/www/default

每天6:30进行同步

openwrt编译ss、ssr定制固件

没有评论

2016年12月12日 at 下午5:09分类:其他

1、获取源代码

在openwrt源码目录执行如下命令
git clone https://github.com/shadowsocks/openwrt-shadowsocks.git package/shadowsocks-libev
git clone https://github.com/shadowsocks/luci-app-shadowsocks.git package/luci-app-shadowsocks

openwrt$ git clone https://github.com/shadowsocks/luci-app-shadowsocks.git package/luci-app-shadowsocks
正克隆到 'package/luci-app-shadowsocks'...
remote: Counting objects: 524, done.
remote: Total 524 (delta 0), reused 0 (delta 0), pack-reused 524
接收对象中: 100% (524/524), 171.31 KiB | 191.00 KiB/s, 完成.
处理 delta 中: 100% (186/186), 完成.
检查连接... 完成。

2、更新Feeds

更新Feeds,使package在make menuconfig中可用
./scripts/feeds update -a
./scripts/feeds install -a

3、配置编译选项
选择luci-app-shadowsocks(luci-app)、shadowsocks-libev(network)


选择其他必要的组件:
luci-coll/moud/them/app-ddns\idle\sambe
network-route-ip
network-ipset/ppp-mod-pptp
kernel mod-netfil-tproxy
base-libpthread/libpthread-db
Libraries,SSL选中libopenssl
4、编译
make V=99
编译后的固件在:
openwrt/bin/ar71xx
固件中已经包含ss:

TPLINK TL-WR743N V2 SS定制固件下载地址:

http://iytc.net/tools/743_ss.rar

单独安装的ipk在
openwrt/bin/ar71xx/packages/base

ipk下载:

http://iytc.net/tools/743_ssipk.rar

SS配置说明参考:

OPENWRT下安装KCPTUN+SS

另如要编译ssr固件,源码地址为:

git clone https://github.com/bettermanbao/openwrt-shadowsocksR-libev-full.git package/shadowsocksR-libev-full
# 选择要编译的包 Network -> shadowsocksr-libev(无界面)或Network -> shadowsocksr-libev-gfwlist(有界面)

1

ssr ipk下载:

http://iytc.net/tools/ssr_ipk.rar