Linux 基于 Transmission 搭建 PT 环境并实现外网访问

/ 10评 / 6

背景环境

群晖NAS + CentOS8主机

Transmission部署在CentOS主机上,通过NFS协议挂载群晖NAS的DownLoad文件夹作为PT下载的存储目录;通过内网穿透实现外网访问Transmission,实现远程下载;基于群晖NAS文件系统来管理下载好的资源。

安装 Transmission

使用yum安装

Transmission 包含在 EPEL 拓展仓库中,安装前需要安装 epel-release

yum -y install epel-release
yum -y update

EPEL 源安装成功后,即可安装 Transmission

yum install transmission-daemon

配置

安装成功后,输入 systemctl start transmission-daemon.service 即可启动 Transmission。如果用浏览器打开 web 端(http:// 域名:9091 或 http://IP 地址:9091),会提示 “403: Forbidden”(页面打不开可能是防火墙没有放行相应端口),这是因为 Transmission 还没配置好。

因而,需要输入 systemctl stop transmission-daemon.service 停止 Transmission 服务,再进行配置。

注意,如果安装后没有启动过 Transmission,是不会生成配置文件。因而,需要先启动服务,再停止服务,生成 json 配置文件后再进行配置。值得注意的是,如果在服务启动时修改配置文件再重启服务,配置文件会自动恢复成重启前的内容。

接下来,就可以打开配置文件:

vi /var/lib/transmission/.config/transmission-daemon/settings.json

配置文件的参数非常多,可按自己需求进行修改。如果对 vi 编辑器不了解,Google 或百度一下就有简单的使用介绍。以下条目的修改是本人自己在用的参数:

"download-dir":"/data/nas-download/pt",
"encryption": 2,
“dht-enabled”: false,
"rpc-authentication-required": true,
"rpc-enabled": true,
"rpc-password": "输入你的管理密码",
"rpc-username": "管理你的用户名",
"rpc-whitelist-enabled": false,

更多配置参数,可去 Editing-Configuration-Files探索。

配置好后,保存退出 json 文件,再次输入 systemctl start transmission-daemon.service 启动 Transmission 服务,即可用浏览器打开 web 端(http://域名:9091 或 http://IP 地址:9091),上传种子进行下载。

使用 systemctl enable transmission-daemon 设置服务开机启动。

由于我transmission的下载目录时通过NFS挂载到下载机上,在使用过程中一直出现Permission denied问题,无论如何设置目录权限,都没有解决。后来通过修改transmission-daemon服务运行用户解决:

vim /usr/lib/systemd/system/transmission-daemon.servic

修改Userroot

注意:修改启动用户后,新的配置文件为~/.config/transmission-daemon/settings.json

Web UI 美化界面

Transmission 自带的网页 UI 比较简陋,可以安装 transmission-web-control进行美化:

wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control.sh --no-check-certificate
sh install-tr-control.sh

制作种子

transmission-create -p -o ./example.torrent -t https://pt.pt-example.com/announce.php -s 4096 ./example.mkv

参数说明:

内网穿透实现Transmission的外网访问

简单来说,要想外网访问家中的transmission,需要路由器通过端口映射的方式访问;由于我家宽带没有外网ip,想在外面访问pt服务只能使用外网穿透的方式,我选择frp来实现。使用内网穿透需要有一台具有外网ip的服务器。

服务端配置

服务器作为公网访问唯一的固定地址,即作为 server 端。内网客户端作为 client 端,会主动向 server 端创建连接,此时再从 server 端反向发送数据即可实现内网穿透。

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

mv frp_0.34.3_linux_amd64 /usr/frp

编辑目录下 frps.ini文件:

[common]
# frp 监听地址
bind_port = 7000

#frp 控制面板
dashboard_port = 7500

# dashboard 用户名密码可选,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

# transmission内网穿透
[transmission]
type = tcp
listen_port = 9010 
auth_token = 12345678

其他具体配置说明请参考frp中文文档

设置完成后执行

./frps -c frps.ini

客户端配置

客户端只需要多配置所链接的服务器端地址,以及要映射客户端的哪些服务端口。

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

mv frp_0.34.3_linux_amd64 /usr/frp

编辑目录下 frpc.ini文件:

[common]
# 服务器端地址 填自己服务器端的IP地址或者域名
server_addr = X.X.X.X 
# 服务器端口
server_port = 7000 
# 授权token 要与服务器端的SSH密码一致才能映射 这个密码是6000端口的 1个密码可以对一个端口
auth_token = 12345678 
[ssh]
type = tcp
local_ip = 127.0.0.1 
local_port = 22
# 授权token 要与服务器端的transmission密码一致才能映射 这个密码是9091端口的 1个密码可以对一个端口
auth_token = 12345678 

设置完成后执行

./frpc -c frpc.ini

使用服务启动frpc请参考:FRP systemd 启动脚本 FRP systemd init config

参考文章:

Linux | 如何挂 PT:CentOS 7 安装配置美化 Transmission 及制作种子

CentOS 7.0 (Linux)下配置frp进行内网穿透

  1. Newbee说道:

    那transmission需要设置哪些端口穿透呢?设置了51xxx的那个端口穿透,结果测试不通

    • 小武说道:

      @Newbee 内网穿透设置:9091,是为了能在外网操作家中的 transmission。

      • Newbee说道:

        @小武 那怎么才能让transmission可以正常上传呢,现在上传只有几十kb还每分钟还只有几秒钟

        • 小武说道:

          @Newbee 除非你有大带宽的外网服务器做内网穿透,不然映射了也没有用;因为最终的上行速度还是被外网服务器给限制住了。
          目前看来,想要上传速度快,让家里有外网ip是最有效的办法了。
          去运营商申请,一般都会给的。

          • Newbee说道:

            @小武 问了运营商不给公网IP;有一个1G带宽的vps,用FRPS和FRPC穿透了几个端口都能用,但是transmission里设置的那个端口穿透了也测试不通,没有上传速度

          • 小武说道:

            @Newbee 1G的VPS? 牛逼。。。没记错的话,transmission对外暴露的端口应该是UDP协议,这个FRPS应该只支持TCP协议。估计你需要研究一下 UDP协议的内网穿透

          • 小武说道:

            @Newbee 刚刚看了一下Frp的文档,貌似是支持UDP协议的,在frpc.ini配置文件中,只需要将type从tcp改为udp就行了;你试试

          • Newbee说道:

            @小武 刚把服务端和客户端设置好后都重启了服务,服务端显示udp proxy建立成功了,但在transmission上还是测试不通,之前在有公网ip的时候设置好公网ip的路由器端口映射下就好了,现在tcp和udp的穿透都试过,估计没办法了

          • 小武说道:

            @Newbee 那估计没办法了。估计transmission暴露的外网IP是你宽带的外网IP而不是服务器。所以测试的时候其实是没访问到你的vps;

  2. Newbee说道:

    是的不折腾了,谢谢你的帮助!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注