參考文章
https://wiki.openwrt.org/doc/uci/transmission
1. 安裝包
必裝的 transmission-daemon-openssl (后台服務)
選裝的 transmission-cli-openssl (命令行管理) transmission-remote-openssl (遠程UI管理) transmission-web-openssl (web管理)
我選擇的是 daemon 和 remote, 在編譯OpenWrt的時候已經加入
另外需要安裝一個客戶端, 我在windows下使用的是 Transmission Remote GUI https://sourceforge.net/projects/transgui/
2. 掛載外置U盤
fdisk /dev/sda, 如果內存小於128M, 需要分一個64M~128M大小的primary區做swap, 剩下的格式化為ext4, 並掛載到/mnt/sda2 下
需要創建兩個目錄done, incomplete, 分別用於存放 完成/未完成的下載文件
3. 配置這是我的配置文件
config transmission option enabled 1 option config_dir '/tmp/transmission' #option user 'nobody' option mem_percentage 50 option nice 10 option ionice_flags '-c 3' option alt_speed_down 50 option alt_speed_enabled false option alt_speed_time_begin 540 option alt_speed_time_day 127 option alt_speed_time_enabled false option alt_speed_time_end 1020 option alt_speed_up 50 option bind_address_ipv4 '0.0.0.0' option bind_address_ipv6 '::' option blocklist_enabled false option blocklist_url '' option cache_size_mb 2 option dht_enabled true option download_dir '/mnt/sda2/done' option download_queue_enabled true option download_queue_size 4 option encryption 1 option idle_seeding_limit 30 option idle_seeding_limit_enabled false option incomplete_dir '/mnt/sda2/incomplete' option incomplete_dir_enabled true option lazy_bitfield_enabled true option lpd_enabled false option message_level 3 option peer_congestion_algorithm '' option peer_limit_global 240 option peer_limit_per_torrent 60 option peer_port 51413 option peer_port_random_high 65535 option peer_port_random_low 49152 option peer_port_random_on_start false option peer_socket_tos 'default' option pex_enabled true option port_forwarding_enabled true option preallocation 1 option prefetch_enabled true option queue_stalled_enabled true option queue_stalled_minutes 30 option ratio_limit 2.0000 option ratio_limit_enabled false option rename_partial_files true option rpc_authentication_required false option rpc_bind_address '0.0.0.0' option rpc_enabled true option rpc_password '' option rpc_port 9091 option rpc_url '/transmission/' option rpc_username '' option rpc_whitelist '192.168.1.*' option rpc_whitelist_enabled true option scrape_paused_torrents_enabled true option script_torrent_done_enabled false option script_torrent_done_filename '' option seed_queue_enabled false option seed_queue_size 10 option speed_limit_down 100 option speed_limit_down_enabled false option speed_limit_up 20 option speed_limit_up_enabled false option start_added_torrents true option trash_original_torrent_files false option umask 18 option upload_slots_per_torrent 14 option utp_enabled true option scrape_paused_torrents true option watch_dir_enabled false option watch_dir ''
對各項參數的說明, 可以查看上面的參考頁, 也可以查看Transmission項目的文檔
https://github.com/transmission/transmission/wiki/Editing-Configuration-Files
對於設置的三個路徑: config, incomplete, done, 要檢查目錄的owner是否與transmission daemon的用戶一致. 程序運行用戶默認是 transmission:transmission
OpenWrt重啟后丟失下載列表
這是因為配置文件設置在了臨時文件上, 重啟后這個文件就被重置了. 請設置這個參數到實際的存儲上
option config_dir '/mnt/sda1/transmission/.config' #HDD is mounted on /mnt/sda1
Port Forward
如果transmission-daemon的端口不能被局域網外的設備連接, 下載性能就會打很大的折扣, 需要檢查port forward是否已經打開.
設置port_forwarding_enabled為true, 開啟port forwarding, 然后設置peer_port為一個非51413的端口(在4xxxx~6xxxx間隨機),
1) 如果當前transmission運行在網關路由下級設備, 而此設備是直接連到此網關路由的lan里的, 需要在網關路由上打開此IP的port forward. 一個設置的例子:
Name: forward-for-bt1, Match: IPv4-TCP, UDP, From any host in wan Via any router IP at port 59456 Forward to: IP 192.168.10.100, port 59456 in lan
在/etc/config/firewall中是
config redirect option target 'DNAT' option src 'wan' option dest 'lan' option proto 'tcp udp' option src_dport '59456' option dest_ip '192.168.10.100' option dest_port '59456' option name 'forward-for-bt1'
測試: 通過外網口, telnet a.a.a.a 59456 能出現已連接提示即成功
2) 如果當前transmission運行在一個路由的lan里, 而這個路由的wan又連接到網關路由的lan, 則除了上面的設置外, 還需要在當前路由上打開端口, 允許外界通過wan訪問此設備的端口
Name: Allow-for-bt, Any tcp, udp From any host in wan To any router IP at port 59457 on this device
在/etc/config/firewall中是
config rule option target 'ACCEPT' option src 'wan' option proto 'tcp udp' option dest_port '59456' option name 'Allow-for-bt'
測試同上
4. 啟動
注意: 上面配置中的option enabled 必須為1, 否則不會啟動
# 隨路由器啟動 /etc/init.d/transmission enable # 啟動服務 /etc/init.d/transmission start # 對應的停止和不隨服務器啟動 /etc/init.d/transmission stop /etc/init.d/transmission disable
5. 查看日志
日志信息在 system log. 如果需要更多信息, 修改配置中的 message-level -- (0 = None, 1 = Error, 2 = Info, 3 = Debug, default = 2)
6. 使用Transmission Remote GUI連接添加新服務地址192.168.1.1 9091后, 就可以連接, 並往上面添加bt任務了
Update 2017-02-07: 使用U盤和移動硬盤的下載性能差別
之前圖方便, 一直是使用U盤作為Transmission的存儲, 但是在下載過程中, 經常會發生Overheated(過熱)現象, 不是說發熱, 而是說當下載速度開始突然增大時, 路由器的負載會突然加大, 然后失去響應, 速度陡降到零, 然后過一段時間恢復后, 又來一次. 在種子數量較多時, 通過 top -d1可以觀察到, 整個系統負載一直是在2.x~4.x之間, 非常高. 但是transmission-daemon本身所占的cpu並不高, 只有10%~20%, 這些額外的負載, 很大可能是在IO上.
這些問題在換成移動硬盤作為存儲后就消失了. 此時系統負載最高不超過0.8, transmission-daemon占的cpu在5%~10%之間. 從上級路由中看到流量一直保持在一個比較平穩的曲線上, 而不像U盤做存儲時那種尖銳的毛刺.