Ubuntu搭建BT服务器&FTP服务器发布种子

Ubuntu搭建BT服务器&FTP服务器发布种子

最近被要求搭个简单的BT服务器用来实现文件上传下载,发布种子因为考虑是内部使用所以想搭成FTP,但是路上踩了好几脚的坑,所以写个Blog自己记录下具体的过程。

  • BT服务器搭建工具-BitTorrent
  • 在Ubuntu搭建FTP服务器

实现版本:Ubuntu 17.04/18.04均已测试过


BT服务器搭建工具-BitTorrent

使用BitTorrent工具可以很方便地搭起一个自用的BT Tracker服务器,但是现在网上很难找到工具的源码资源了,到BitTorrent官网只能下载到一个下载用工具。这里自己上传了一个以供取用。链接:https://pan.baidu.com/s/1GKjGawhvZeSlEvJ5fTVgkg 密码:cef5
不管用什么方式总之先放在你的Linux系统下,位置不限,这里以放在/home下为准(实际上放在别的地方我没试过,不过在/usr/local/src文件夹下存放经过实践证明是可行的)。在继续下一步之前,先来确保一下系统里有Python2存在,直接安装一个就好:

apt install python。

如果没有权限就自行sudo一下,不赘述了。
在装好python之后,解压上传到Linux的tar文件:

tar -xzvf BitTorrent-4.0.3.tar.gz

指令结束后会在同一个目录下得到文件夹BitTorrent-4.0.3。进入目录后输入ls就会看到一大堆.py文件,这就是为什么需要Python2了,BitTorrent4.0.3版本的源码是用Python2写成的,所以只有Python3还真就不行。
bt开头的.py文件有很多,不过这里需要用到的只有几个,等会儿再说。这里先运行一下setup.py,向Python2添加运行其他BT源码需要的库文件:

python setup.py install

这条指令完成后就可以开始运行目录下的.py文件了。首先是搭建BT服务器最重要的Tracker服务器:

python bttracker.py –port 6969 –dfile /home/log

port:指定Tracker服务器使用的端口号。
dfile:指定服务器运行log的输出文件。
通过这条指令就可以搭建起一个Tracker服务器,输入http://服务器ip:端口号 就可以访问了。
Ubuntu搭建BT服务器&FTP服务器发布种子_第1张图片
目前因为服务器才开起来,所以暂时没有可以追踪的种子,我们需要自己手动创建种子。当然,用BitTorrent之类的工具制作种子是可行的,不过个人没有尝试过,这里还是介绍一下如何用BitTorrent源码工具制作种子,直接拿刚刚解压完还没删除的tar压缩包练手好了。
先建立一个新的文件夹用于存放和管理源文件、一个新的文件夹用于存放种子文件。这里分别命名为data和torrent了。将压缩包丢进data文件夹下,然后执行:

python btmaketorrent.py http://服务器ip:端口号/announce /home/data/BitTorrent-4.0.3.tar.gz

这个指令能够在目标文件的同目录下制作一个种子文件,并交由指定的Tracker服务器进行追踪。现在,在data文件夹下,应该是会多出来一个.torrent文件,我们把它移动到torrent文件夹下。
现在种子也有了,F5一下服务器的页面,但是Tracker还是没有开始追踪。这是因为实际上种子做出来之后还没有人开始做种,所以服务器根本不知道你制作了这样的一个种子。接下来我们就要让服务器知道我们制作了种子,并且让我们的服务器自己开始做第一个种源以供他人下载。实现这个功能可以通过执行btlaunchmany.py完成:

python btlaunchmany.py –data_dir /home/data –torrent_dir /home/torrent

这样一来我们的种子文件就已经让服务器知道了。
Ubuntu搭建BT服务器&FTP服务器发布种子_第2张图片
??但是服务器上显示的是downloading,表示是正在下载,并没有开始做种…
这是因为种子目录下没有目标文件,btlaunchmany认为它是没有下载好的文件所以在申请下载。这时只需要把data文件夹下的原文件硬连接到torrent目录下就好了:

ln /home/data/BitTorrent-4.0.3.tar.gz /home/torrent

然后再执行btlaunchmany,就可以让其他机器开始下载了。
Ubuntu搭建BT服务器&FTP服务器发布种子_第3张图片


在Ubuntu搭建FTP服务器

FTP服务器的搭建才是真正的一步一坑…基本上除了最开始的sudo apt install vsftpd以外剩下的就是不停地踩坑了。先冷静下一步来吧。

  • 安装vsftpd
    据说是在Linux上最好用的FTP服务器搭建工具,不过实际上用的时候反而是走一步踩一个坑,网上的教程实在是太杂乱了,所以还是自己总结了一份以便以后万一会用到。

    apt install vsftpd

    注:vsftpd需要的环境一般在默认的Ubuntu系统中都已经配置好了,所以一般都可以直接上手使用。

  • 配置vsftpd
    在安装结束之后,与网上某些版本的介绍不同,3.0.3版本的vsftpd的配置文件是直接放在/etc文件夹下的,可以用vim编辑器直接编辑。以下贴出个人的vsftpd.conf设置,仅供参考对照修改:

listen=NO                                   #默认配置为NO,表示vsftpd是直接在systemctl启动的
listen_ipv6=YES                             #默认配置为YES,表示vsftpd监听ipv6端口
anonymous_enable=NO                         #默认配置为NO,禁止匿名用户访问,这样能够一定程度上提高FTP的安全性。
local_enable=YES                            #配置为YES,表示允许本地用户访问。这是本教程访问FTP服务器的主要方式。
write_enable=YES                            #配置为YES,表示允许用户写入数据。
local_umask=022                             #默认配置是注释,这里取消表示默认的umask是022(具体介绍可以移步http://blog.sina.com.cn/s/blog_49fd52cf0100nekk.html)
dirmessage_enable=YES                       #配置为YES表示用户进入新目录时返回目录信息。
use_localtime=YES                           #使用服务器时间。
xferlog_enable=YES                          #记录上传/下载日志。
connect_from_port_20=YES                    #从端口20连接,保持默认设置就好。
ftpd_banner=Welcome to blah FTP service.    #用户登录时返回的问候语。
chroot_local_user=YES                       #设置本地用户登录是否将其限制在其主目录下。
chroot_list_enable=YES                      #设置是否要使预设的限制用户名单生效。
chroot_list_file=/etc/vsftpd.chroot_list    #使用的限制用户名单路径。以上三条建议启用并配置。
secure_chroot_dir=/var/run/vsftpd/empty     #建议保持默认配置,是在vsftpd不需要文件系统权限时访问到的空目录。
pam_service_name=vsftpd                     #保持默认配置,表示使用的pam服务名。
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO                               #不使用SSL所以不要更改
#启用允许登录的用户名单,这样的配置表示只允许userlist_file名单里的用户登录。
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/user_list
#开始ftp服务器的被动模式
pasv_enable=YES
pasv_min_port=12800
pasv_max_port=12900

配置结束后,使用vim创建两个新的文件,一个命名为user_list,一个命名为vsftpd.chroot_list,在两个文件里都写上准备使用的用户名。个人准备的是两个用户,uploader和test,分别专门用于上传和下载。一个用户名起一行。

  • 配置pam
    配置好vsftpd之后下一步就是配置pam使得登录认证能够正确地生效。这里贴出一个参考链接:vsftpd架设(配置pam模块)
    本部分的内容主要取自于这个教程。
    首先安装db:

    apt install db-util

    然后去/etc/pam.d文件夹下,新建一个文件logins.txt,写入用户名和密码。注意是一行用户名一行密码。
    Ubuntu搭建BT服务器&FTP服务器发布种子_第4张图片
    保存后执行以下命令:

    sudo db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
    sudo chmod 600 /etc/vsftpd_login.db

    以保证该数据库的权限无误。
    然后编辑pam.d下的vsftpd文件,注释/删除掉所有原有的内容,添加以下几行:

    
    # /etc/pam.d/vsftpd
    
    auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
    account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login

    然后输入以下命令重启:

    invoke-rc.d vsftpd restart

    就配置好pam了。

  • 用户设置
    配置好pam之后进行用户的设置。首先,在Ubuntu的系统中vsftpd的useradd指令不会再自己添加新的用户默认主文件夹了,所以我们需要手动创建,我将它们创建在home文件夹下,并命名为upload与download。
    创建好文件夹之后,我们使用useradd来添加用户:

    useradd -s /sbin/nologin -d /home/upload uploader #光使用这一条命令只能创建一个用户而已
    passwd uploader #用这条指令来设置密码,个人没有尝试过不过不建议设置为跟pam设置中不同的密码

    这样就创建了一个用户。不过只是这样的话还不行,刚刚创建好的uploader实际上还没有获得/home/upload的权限,因此我们需要手动修改它:

    chown uploader /home/upload
    chmod u+rwx /home/upload

    这样就把upload文件夹的权限交给uploader了。用同样的方法设置好test的权限,注意只给予下载用户可读的权限。
    准备完成之后就可以重启我们的vsftpd服务:

    systemctl restart vsftpd.service

    然后去看看我们的服务器了!


附:自动执行种子制作脚本

#!/bin/bash
for file in /home/test/*
do
    if [ -d "$file" ]
    then
        echo "$file is a directory."
    elif [ -f "$file" ]
    then
        echo $file
        a=`basename "$file"`
        echo $a
        cp /home/test/$a /home/files
        python /home/BitTorrent-4.0.3/btmaketorrent.py http://你的服务器IP地址:你设置的tracker端口/announce /home/files/$a
        b=$a".torrent"
        echo $b
        mv /home/files/$b /home/torrent
        ln /home/files/$a /home/torrent
        cp /home/torrent/$b /home/download
    else
        echo $file
    fi
done

你可能感兴趣的:(入门教学)