非中国IP模式下的shadowsocks如何挂pt

背景:

自从把路由的shadowsocks代理模式设置为非中国IP,导致PT只能下载不能上传

原因:

由于自己使用的pt的tracker服务器(tracker.hdtime.org,tracker.ccfbits.org)都是在海外。虽然通过shadowsocks代理可以连接到tracker服务器,但是tracker服务器看到的客户端ip是shadowsocks代理服务器的ip,而非pt客户端的ip。所以会导致其他pt客户端去下载自己本地的资源时,访问的是shadowsocks服务器ip。

解决方案:

ping出tracker服务器的ip,然后把这个ip放入china ipset里。具体实现如下:

pt_ip_update.sh

#! /bin/sh

ping_domain(){
        ip=`ping -c 2 $1 | awk -F'[ \:]' 'NR==3{print $4}'`
        echo $ip
}

check_ip(){
        count=`echo $1 | grep -c -e'^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$'`
        return $count
}

add_ip_to_china_set(){
        #echo "ping $1"
        check_ip $1
        result=`echo $?`
        #echo "check $1 result: $result"
        if [ $result -eq 1 ]; then
                ipset add china $1
        fi
}

ccfbits_ip=`ping_domain 'tracker.ccfbits.org'`
hdtime_ip=`ping_domain 'tracker.hdtime.org'`

add_ip_to_china_set $ccfbits_ip
add_ip_to_china_set $hdtime_ip

最后在crontab里,设置定时执行任务。

此条目发表在IT分类目录,贴了, , , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

*