静看光阴荏苒
不管不顾不问不说也不念

transmission-cli制作种子/ipset+iptables屏蔽指定国家的IP

安装需要用到的工具:

apt -y install transmission-cli mediainfo ipset

创建种子:

transmission-create -p -c lala.im -s 1024 -t https://tp.m-team.cc/announce.php -o /opt/xxx.torrent [要创建的文件名或者目录]

注:

-p 代表创建私有种子。

-c 是可选项,作用是添加种子的注释。

-s 分块大小,自行根据文件体积合理填写。

-t tracker服务器地址。

-o 种子输出路径和文件名

所有参数的后面跟上要做种的目录或是文件名。

有些PT站发个毛片还非要贴上视频的编码等信息,那这里可以用mediainfo,用法很简单命令后面跟上要查看的媒体文件名即可,例如:

mediainfo 326MAG-003.mp4

复制回显的内容粘贴并发布就行了:

不想让自己做的种子被某些盒子连上?可以使用ipset+iptables屏蔽指定国家的IPv4/v6。注意!这样做很多时候有适得其反的效果,打个最简单的比方:你必须将所有盒子的IP都屏蔽干净,一个不剩,哪怕只有一个盒子连上你的种子,一旦他从你这里下载完,它就可以立即和其他被你屏蔽的盒子连接,这样你会发现到头来你的上传还不如被你屏蔽的那些盒子多。

这里我只拿德国和法国的IP做演示,首先需要下载IPv4数据库:

mkdir -p ipdeny && cd ipdeny
wget http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar -xzvf all-zones.tar.gz

然后新建两个ipset链:

ipset -N de hash:net
ipset -N fr hash:net

接着将指定国家的IPv4添加到链:

for k in $(cat ~/ipdeny/de.zone); do ipset -A de $k; done
for i in $(cat ~/ipdeny/fr.zone); do ipset -A fr $i; done

现在添加iptables规则即可完成屏蔽:

iptables -A INPUT -m set --match-set de src -j DROP
iptables -A INPUT -m set --match-set fr src -j DROP

要解除屏蔽,删除规则:

iptables -D INPUT -m set --match-set de src -j DROP
iptables -D INPUT -m set --match-set fr src -j DROP

注意,有些机器的DNS服务器地址也会在你屏蔽的IP段内,比如Hetzner的服务器,我把所有德国的IP都给block了,但自己DNS服务器的地址也是属于德国的,这样就出问题了,所以编辑:

nano /etc/resolv.conf

改为其他公共DNS服务器地址:

nameserver 8.8.8.8
nameserver 8.8.4.4

如果你的服务器有IPv6,你会发现这些盒子还是可以连上你的服务器,因为他们也有IPv6,在之前我们只是把IPv4给屏蔽掉了,所以现在还需要将IPv6屏蔽掉。既然已经有了上面的经验,现在要屏蔽IPv6基本步骤就和上面差不多,首先下载IPv6的数据库:

mkdir -p ipdeny6 && cd ipdeny6
wget http://www.ipdeny.com/ipv6/ipaddresses/blocks/ipv6-all-zones.tar.gz
tar -xzvf ipv6-all-zones.tar.gz

然后新建两个ipset的IPv6链:

ipset -N de6 hash:net family inet6
ipset -N fr6 hash:net family inet6

接着将指定国家的IPv6添加到链:

for k in $(cat ~/ipdeny6/de.zone); do ipset -A de6 $k; done
for i in $(cat ~/ipdeny6/fr.zone); do ipset -A fr6 $i; done

现在添加ip6tables规则即可完成屏蔽:

ip6tables -A INPUT -m set --match-set de6 src -j DROP
ip6tables -A INPUT -m set --match-set fr6 src -j DROP

要解除屏蔽,删除规则:

ip6tables -D INPUT -m set --match-set de6 src -j DROP
ip6tables -D INPUT -m set --match-set fr6 src -j DROP

有漏网之鱼?

iptables -I INPUT -s IPv4地址 -j DROP
ip6tables -I INPUT -s IPv6地址 -j DROP

如果你不小心把规则写错了,没关系,iptables默认是不会永久保存规则的,重启你的服务器,一切规则包括ipset创建的链在内,全部会自动删除:

reboot
赞(2)
未经允许不得转载:荒岛 » transmission-cli制作种子/ipset+iptables屏蔽指定国家的IP
分享到: 更多 (0)

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    最后命令不对,应该是rm -rf :mrgreen:

    橘子5年前 (2019-07-10) Google Chrome 72.0.3626.87 Google Chrome 72.0.3626.87 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿