請問 TrueNAS SCALE 裡頭 Docker 的網路問題

我的 TrueNAS 從 CORE 升級為 SCALE。

我的 NAS 有兩張網路卡,我想一張撥接固定 IP 給 samba 用,另一張用浮動 ip,給 qbittorrent 用。要這樣分,主要是怕跑 qbittorrent 被抓。

我在 CORE 分別用兩張沒問題,主系統用固定 ip,qbittorrent 在 Jail 裡頭跑,則用浮動 ip。 但在 SCALE 裡的 Docker,我一直沒辦法讓 qbittorrent 用另一張網路卡。

我是用「Launch Docker Image」,自己建 docker 的。有建成功,docker 紀錄裡報告正確,但網路不管怎麼設,都是用 NAS 用的那一張網路卡。

請問有沒有什麼建議?
小試一下, web gui 好像沒有可以指定網卡選項, 不確定是否尚在開發, 暫時還沒生出來?

兩張網卡, 流量都是從走第一張...


路由器沒開 port, 但 qt 速度好像還可以...


解決此問題的“最佳”方法可能是創建一個自定義 docker 網絡, 將其橋接到以太網接口, 然後將容器分配給該網絡...

假設第一張網卡是 ens192
假設第二張網卡是 ens224

以下是範例橋接第二張網卡, 可能需要調整 IP 範圍/分配以匹配對應的網絡...
docker network create --driver macvlan --subnet=192.168.168.0/24 --gateway=192.168.168.254 --ip-range=192.168.168.10/30 --opt parent=ens224 macvlan

ip link add macvlan-shim link ens224 type macvlan mode bridge
ip addr add 192.168.168.10/24 dev macvlan-shim
ip link set macvlan-shim up
ip route add 192.168.168.10 dev macvlan-shim

然後運行一個容器測試,如:
docker run --rm -ti --network macvlan-shim --ip 192.168.168.10 bash

但自己對 docker 網絡並不是非常精通, 可惜沒有成功...
Have a nice day~
搞了幾個月終於搞定,自己來回一下 .....

docker 必須用右上角的「Launch Docker Image」建立,不能用 trueNAS 內建的 docker image。

參數設定如下 ....
=============

Application Name : qbittorrent

Image repository : linuxserver/qbittorrent

Environment Variable Name : PUID
Environment Variable Value : 0
Environment Variable Name : PGID
Environment Variable Value : 0
Environment Variable Name : WEBUI_PORT
Environment Variable Value : 4186

Host Interface : 'enp1s0f0' Interface
IPAM Type : Use static IP
固定 IP : 192.168.5.9
目的地 : 192.168.5.0
閘道 : 192.168.5.1
Nameserver : 139.175.1.1, 210.241.208.1, 192.168.3.1

Host Path : /mnt/mule/applications
Mount Path : /qbitdata

==============

Image repository 我使用 linuxserver/qbittorrent,主要是這一版的 image,進命令列模式有 route、wget、ifconfig 這些指令。這些指令當然可以自行安裝,不過會比較麻煩。

Environment Variable 加上 PUID 跟 PGID 設定,這樣 qbittorrent 才能在 /downloads 目錄下新增目錄,否則下載檔案時會有權限錯誤報告。0 是 root 的值,我試過用 qbittorrent 的值 100,不過行不通。

如果要用特定 IP 這邊要先指定,其他像閘道器、Nameserver 好像可有可無 ....

不過這樣還是沒辦法用特定網路卡,因為產生出來的路由表是錯的,必須改一下路由表。linux 更改路由表是使用 route 指令,不過 route 指令在 docker 裡是受限制指令,必須在 trueNAS 的命令列模式才可以執行。

首先開啟 trueNAS 的命令列。先下下面指令 ....
docker ps -a

找出你先前建立的 docker 的「CONTAINER ID」,再下下面指令 ...
docker exec --privileged 3af9a21b3af7 route del default
docker exec --privileged 3af9a21b3af7 route add default gw 192.168.5.1

指令中紅色的數值,改成自己的 container id 跟 gateway。

我對路由表設定不是很懂,不過這樣能跑就是了!
Environment Variable Name : PUID
Environment Variable Value : 0
Environment Variable Name : PGID
Environment Variable Value : 0

這部分應該是要另建帳號、群組。

取得新帳號,群組 的 ID 帶入。(此帳號要在 vol.. 底下有權限)

用 root 是簡單粗暴的方式,但不安全。
hack.pc wrote:
用 root 是簡單粗暴的方式,但不安全。


反正在 docker 裡頭,被抓到 root 權限,應該也沒關係吧?
不懂為什麼很多人覺的用浮動 IP 跑 bittorrent 就不會被抓?

ISP 會不記錄 用戶及浮動 IP ?
maya95 wrote:
不懂為什麼很多人覺的(恕刪)


應該說比較不會引起注意吧 ....

進 torrent 之類的軟體,最先看到的就是 IP。要知道 IP 背後是誰,還得找 ISP 要資料。

一個固定 IP 一直在那邊閃來閃去,被最先鎖定的,搞不好就是這個 IP!

另外我固定 IP 有在跑 jellyfin,同一台路由器同時跑 torrent,就算有限速,對不能延遲中斷的 jellyfin,好像會有影響 ....
如果想裝 amule,建議使用 ngosang/amule,安裝方法同上。不過環境變數要多加個 WEBUI_PWD。

ngosang/amule

至於為什麼有裝 qBittorrent,還要裝 amule?那是因為 amule 裏頭日本片源比較多 .....
更新一下,qBittorrent 的設定改成如下 ....

Application Name : qbittorrent
Image repository : linuxserver/qbittorrent

Environment Variable Name : WEBUI_PORT
Environment Variable Value : 4186

Host Interface : 'enp1s0f0' Interface
IPAM Type : Use static IP
固定 IP : 192.168.5.9
目的地 : 192.168.5.0
閘道 : 192.168.5.1

Configure Host Path Volumes :
Host Path : /mnt/mule/downloads
Mount Path : /downloads
Host Path : /mnt/mule/downloads/config
Mount Path : /config

Workload Details :Security Context
Privileged Mode : yes

=================

我搞了好幾天,才知道 Storage 裡頭的「Configure Host Path Volumes」是幹什麼用的。

這是用來將 docker 外的目錄,鏈結到 docker 裡頭,免得 docker 一更新或關掉,資料就不見。就是參數的 -v 的功能。我一直以為是下面的「Configure Volumes」,才是參數 v。

qBittorrent 會用到兩個目錄,一個存設定,在 /config 下;一個存下載檔案,在 /downloads 下。

而把 Workload Details 裡的「Privileged Mode」打勾,就可以在 docker 的命令列執行 route 指令了!不必用 docker exec 下指令。

另外不必設定 PGID 跟 PUID 了,在 truenas 裡,如果是同一個 pool,直接新增一個 dataset 就可以用。如果不同的 pool ,那要開啟 other 的使用權限。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!