Total Pageviews

Monday, 14 October 2019

利用pingtunnel-by-esrrhs解决dns污染问题

在linux vps上。首先安装go环境,然后,
wget https://github.com/esrrhs/pingtunnel/releases/download/2.5/pingtunnel_linux_amd64.zip
unzip pingtunnel_linux_amd64.zip
mv pingtunnel pingtunnel-by-esrrhs

./pingtunnel-by-esrrhs -type server

不过这是运行在前台的命令。我们可以利用boa把它运行到后台:

boa /root/pingtunnel-by-esrrhs -type server && reboot

服务器端搭建完成。


在本地机器mac上。首先安装go环境,然后,
wget https://github.com/esrrhs/pingtunnel/releases/download/2.5/pingtunnel_darwin_amd64.zip

mkdir pingtunnel_darwin_amd64


mv pingtunnel_darwin_amd64.zip pingtunnel_darwin_amd64


cd pingtunnel_darwin_amd64


unzip pingtunnel_darwin_amd64.zip


./pingtunnel -h

显示:


通过伪造ping,把tcp/udp/sock5流量通过远程服务器转发到目的服务器上。用于突破某些运营商封锁TCP/UDP流量。

    By forging ping, the tcp/udp/sock5 traffic is forwarded to the destination server through the remote server. Used to break certain operators to block TCP/UDP traffic.


Usage:


    // server

    pingtunnel -type server


    // client, Forward udp

    pingtunnel -type client -l 127.0.0.1:53 -s SERVER_IP -t 8.8.8.8:53


    // client, Forward tcp

    pingtunnel -type client -l 127.0.0.1:2299 -s SERVER_IP -t TARGET_SERVER_IP:port -tcp 1


    // client, Forward sock5, implicitly open tcp, so no target server is needed.

    pingtunnel -type client -l 127.0.0.1:2299 -s SERVER_IP -sock5 1


    -type     服务器或者客户端

              client or server


服务器参数server param:


    -key      设置的密码,默认0

              Set password, default 0


    -nolog    不写日志文件,只打印标准输出,默认0

              Do not write log files, only print standard output, default 0 is off


    -noprint  不打印屏幕输出,默认0

              Do not print standard output, default 0 is off


    -loglevel 日志文件等级,默认info

              log level, default is info


    -maxconn  最大连接数,默认0,不受限制

              the max num of connections, default 0 is no limit


    -maxprt   server最大处理线程数,默认100

              max process thread in server, default 100


    -maxprb   server最大处理线程buffer数,默认1000

              max process thread's buffer in server, default 1000


    -conntt   server发起连接到目标地址的超时时间,默认1000ms

              The timeout period for the server to initiate a connection to the destination address. The default is 1000ms.


客户端参数client param:


    -l        本地的地址,发到这个端口的流量将转发到服务器

              Local address, traffic sent to this port will be forwarded to the server


    -s        服务器的地址,流量将通过隧道转发到这个服务器

              The address of the server, the traffic will be forwarded to this server through the tunnel


    -t        远端服务器转发的目的地址,流量将转发到这个地址

              Destination address forwarded by the remote server, traffic will be forwarded to this address


    -timeout  本地记录连接超时的时间,单位是秒,默认60s

              The time when the local record connection timed out, in seconds, 60 seconds by default


    -key      设置的密码,默认0

              Set password, default 0


    -tcp      设置是否转发tcp,默认0

              Set the switch to forward tcp, the default is 0


    -tcp_bs   tcp的发送接收缓冲区大小,默认1MB

              Tcp send and receive buffer size, default 1MB


    -tcp_mw   tcp的最大窗口,默认20000

              The maximum window of tcp, the default is 20000


    -tcp_rst  tcp的超时发送时间,默认400ms

              Tcp timeout resend time, default 400ms


    -tcp_gz   当数据包超过这个大小,tcp将压缩数据,0表示不压缩,默认0

              Tcp will compress data when the packet exceeds this size, 0 means no compression, default 0


    -tcp_stat 打印tcp的监控,默认0

              Print tcp connection statistic, default 0 is off


    -nolog    不写日志文件,只打印标准输出,默认0

              Do not write log files, only print standard output, default 0 is off


    -noprint  不打印屏幕输出,默认0

              Do not print standard output, default 0 is off


    -loglevel 日志文件等级,默认info

              log level, default is info


    -sock5    开启sock5转发,默认0

              Turn on sock5 forwarding, default 0 is off


    -profile  在指定端口开启性能检测,默认0不开启

              Enable performance detection on the specified port. The default 0 is not enabled.


    -s5filter sock5模式设置转发过滤,默认全转发,设置CN代表CN地区的直连不转发

              Set the forwarding filter in the sock5 mode. The default is full forwarding. For example, setting the CN indicates that the Chinese address is not forwarded.


    -s5ftfile sock5模式转发过滤的数据文件,默认读取当前目录的GeoLite2-Country.mmdb

              The data file in sock5 filter mode, the default reading of the current directory GeoLite2-Country.mmdb


sudo ./pingtunnel -type client -l 127.0.0.1:53 -s my-vps-ip -t 8.8.8.8:53

实际使用例子:
sudo wg-quick up wg0
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
cd ~/pingtunnel_darwin_amd64
sudo ./pingtunnel -type client -l :53 -s my-vps-ip -t 8.8.8.8:53

项目地址:https://github.com/esrrhs/pingtunnel 
https://github.com/esrrhs/pingtunnel/releases
------------

这个pingtunnel-by-esrrhs程序用来
解决dns污染问题很好用,比simple-dns-by-wynemo:
https://briteming.blogspot.com/2018/04/simple-dns.html好用很多。
但是pingtunnel-by-esrrhs运行一段时间后,可能变得不正常.
-------------------------

利用pingtunnel-by-esrrhs翻墙(可能会突然翻墙失败,估计原因是未加密的连接


如上文所说搭建服务器端。

然后,在本地机器mac上。首先安装go环境,然后,
wget https://github.com/esrrhs/pingtunnel/releases/download/2.5/pingtunnel_darwin_amd64.zip

mkdir pingtunnel_darwin_amd64


mv pingtunnel_darwin_amd64.zip pingtunnel_darwin_amd64


cd pingtunnel_darwin_amd64


unzip pingtunnel_darwin_amd64.zip


./pingtunnel -h


sudo ./pingtunnel -type client -l 127.0.0.1:2299 -s SERVER_IP -sock5 1


不要关闭此终端,然后设置浏览器的socks5 proxy address为127.0.0.1 ,端口为2299,浏览器即可翻墙。


=========================


以上是下载可执行文件来执行。也可通过go get的办法来编译:

cd $GOPATH

GO111MODULE=off go get -u -v github.com/esrrhs/pingtunnel/


 which pingtunnel

显示:

/root/go1.16/go/gopath/bin/pingtunnel

说明编译pingtunnel成功。