我的 TrueNAS 從 CORE 升級為 SCALE。
我的 NAS 有兩張網路卡,我想一張撥接固定 IP 給 samba 用,另一張用浮動 ip,給 qbittorrent 用。要這樣分,主要是怕跑 qbittorrent 被抓。
我在 CORE 分別用兩張沒問題,主系統用固定 ip,qbittorrent 在 Jail 裡頭跑,則用浮動 ip。 但在 SCALE 裡的 Docker,我一直沒辦法讓 qbittorrent 用另一張網路卡。
我是用「Launch Docker Image」,自己建 docker 的。有建成功,docker 紀錄裡報告正確,但網路不管怎麼設,都是用 NAS 用的那一張網路卡。
請問有沒有什麼建議?
兩張網卡, 流量都是從走第一張...

路由器沒開 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。
我對路由表設定不是很懂,不過這樣能跑就是了!
ngosang/amule
至於為什麼有裝 qBittorrent,還要裝 amule?那是因為 amule 裏頭日本片源比較多 .....
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 的使用權限。