3つのネットワークインターフェイスからトラフィックを分離する方法

3つのネットワークインターフェイスからトラフィックを分離する方法

Ubuntu 22.04で3つのネットワークインターフェイスからトラフィックを分離する方法

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.48  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::8276:83ab:72d6:1287  prefixlen 64  scopeid 0x20<link>
        ether 9c:53:22:48:77:19  txqueuelen 1000  (Ethernet)
        RX packets 7797  bytes 1129504 (1.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6828  bytes 593700 (593.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp8s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.101  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::b875:1df4:ff5e:9f09  prefixlen 64  scopeid 0x20<link>
        ether d8:5e:d3:01:84:ed  txqueuelen 1000  (Ethernet)
        RX packets 135512185  bytes 8949006996 (8.9 GB)
        RX errors 0  dropped 237  overruns 235  frame 0
        TX packets 365038054  bytes 534261499563 (534.2 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xfa800000-fa81ffff  

enp9s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.36  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2403:6200:89a6:d09d:5606:aae2:c339:9eb1  prefixlen 64  scopeid 0x0<global>
        inet6 2403:6200:89a6:d09d:d5ac:2515:913e:e2be  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::272a:26bd:9d12:e881  prefixlen 64  scopeid 0x20<link>
        ether d8:5e:d3:01:84:ee  txqueuelen 1000  (Ethernet)
        RX packets 274876935  bytes 23805585708 (23.8 GB)
        RX errors 0  dropped 1956  overruns 0  frame 0
        TX packets 740203694  bytes 1081935809783 (1.0 TB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp8s0はすでにデフォルトで192.168.0.1を介して接続された単独で動作し、192.168.1.1を介して接続されたenp9s0とシームレスに動作していましたが、eno1を追加したところ、問題が発生しました。

すべてのネットワークインターフェイスは、ISPが異なる3つのルータに接続され、eno1は追加のLAN PCIeカード、enp8s0とenp9s0はオンボードLANスロットです。

私のIPルーティング結果です

default via 192.168.1.1 dev enp9s0 proto dhcp metric 100 
default via 192.168.0.1 dev enp8s0 proto dhcp metric 102 
default via 192.168.1.1 dev eno1 proto dhcp metric 103 
169.254.0.0/16 dev enp8s0 scope link metric 1000 
192.168.0.0/24 dev enp8s0 proto kernel scope link src 192.168.0.101 metric 102 
192.168.1.0/24 dev enp9s0 proto kernel scope link src 192.168.1.36 metric 100 
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.48 metric 103 

enp9s0はISP1に接続されているため、enp8s0はISP2に接続され、eno1はISP3に接続されます。

私はこの3つのトラフィックがISPに応じて別々に出たいと思います。乾燥すると分離されました。

money@money:~$ curl --interface enp8s0 ifconfig.me
101.108.144.237
money@money:~$ curl --interface enp9s0 ifconfig.me
14.207.43.37
money@money:~$ curl --interface eno1 ifconfig.me
171.100.22.228

しかし、rcloneを使用してファイルをアップロードすると停止します。

enp8s0を最初に追加する前に、これが発生しました。それ以前はネットワークインターフェースが1つだけでしたが、今はenp9s0です。

しなければならなかった

sudo ip route add 192.168.0.0/24 dev enp8s0 src 192.168.0.101 table rt2
sudo ip route add default via 192.168.0.1 dev enp8s0 table rt2
sudo ip rule add from 192.168.0.101/32 table rt2
sudo ip rule add to 192.168.0.101/32 table rt2

そしてそれを解決しました

これでeno1を追加し、上記の問題が再び発生し、両方を試しました。

sudo ip route add 192.168.1.0/24 dev eno1 src 192.168.1.48 table rt2
sudo ip route add default via 192.168.1.1 dev eno1 table rt2
sudo ip rule add from 192.168.1.48/32 table rt2
sudo ip rule add to 192.168.1.48/32 table rt2

そして

sudo ip route add 192.168.1.0/24 dev eno1 src 192.168.1.48 table rt3
sudo ip route add default via 192.168.1.1 dev eno1 table rt3
sudo ip rule add from 192.168.1.48/32 table rt3
sudo ip rule add to 192.168.1.48/32 table rt3

しかし、まだ通過できません。

IPルートリストテーブルの詳細

money@money:~$ ip route list table rt2
default via 192.168.0.1 dev enp8s0 
192.168.0.0/24 dev enp8s0 scope link src 192.168.0.101 
192.168.1.0/24 dev eno1 scope link src 192.168.1.48 
money@money:~$ ip route list table rt3
default via 192.168.0.1 dev enp8s0 
192.168.0.0/24 dev enp8s0 scope link src 192.168.0.101 
192.168.1.0/24 dev eno1 scope link src 192.168.1.48 

cat /etc/iproute2/rt_tablesの場合

#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep
1 rt2
1 rt3

IP結果

2: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether d8:5e:d3:01:84:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.36/24 brd 192.168.1.255 scope global dynamic noprefixroute enp9s0
       valid_lft 9272sec preferred_lft 9272sec
    inet6 2403:6200:89a6:d09d:5606:aae2:c339:9eb1/64 scope global temporary dynamic 
       valid_lft 581671sec preferred_lft 62705sec
    inet6 2403:6200:89a6:d09d:d5ac:2515:913e:e2be/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 863871sec preferred_lft 431871sec
    inet6 fe80::272a:26bd:9d12:e881/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether d8:5e:d3:01:84:ed brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.101/24 brd 192.168.0.255 scope global dynamic noprefixroute enp8s0
       valid_lft 63271sec preferred_lft 63271sec
    inet6 fe80::b875:1df4:ff5e:9f09/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 9c:53:22:48:77:19 brd ff:ff:ff:ff:ff:ff
    altname enp10s0
    inet 192.168.1.48/24 brd 192.168.1.255 scope global dynamic noprefixroute eno1
       valid_lft 82853sec preferred_lft 82853sec
    inet6 fe80::8276:83ab:72d6:1287/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

rcloneを使用してアップロードするときの3つのインターフェースの比較。最初は --bind オプションを追加せずに enp9s0 を通過するので、接続はプライマリラインを通過するので問題はありません。

money@money:~$ rclone move --verbose --transfers 2 --checkers 6 --bwlimit 1G --contimeout 120s --timeout 600s --retries 6 --low-level-retries 20 --buffer-size 128M --drive-chunk-size 128M --stats 1s /media/cache/vipx3 up:
2023/03/11 18:31:15 INFO  : Starting bandwidth limiter at 1Gi Byte/s
2023/03/11 18:31:16 INFO  : 
Transferred:              0 B / 74.568 GiB, 0%, 0 B/s, ETA -
Checks:                 0 / 1, 0%
Transferred:            0 / 1, 0%
Elapsed time:         1.0s
Checking:

Transferring:
 * plot-k32-c7-2023-03-11…8a61bb6c66fc76752.plot:  0% /74.568Gi, 0/s, -

2023/03/11 18:31:18 INFO  : 
Transferred:       52.871 MiB / 74.568 GiB, 0%, 20.327 MiB/s, ETA 1h2m33s
Checks:                 0 / 1, 0%
Transferred:            0 / 1, 0%
Elapsed time:         3.0s
Checking:

Transferring:
 * plot-k32-c7-2023-03-11…8a61bb6c66fc76752.plot:  0% /74.568Gi, 20.327Mi/s, 1h2m33s

前述のIPルーティングルールを追加した後、enp8s0(192.168.0.101)を介したこの操作も通過しました。

money@money:~$ rclone move --bind 192.168.0.101 --verbose --transfers 2 --checkers 6 --bwlimit 1G --contimeout 120s --timeout 600s --retries 6 --low-level-retries 20 --buffer-size 128M --drive-chunk-size 128M --stats 1s /media/cache/vipx3 up:
2023/03/11 18:28:39 INFO  : Starting bandwidth limiter at 1Gi Byte/s
2023/03/11 18:28:40 INFO  : 
Transferred:              0 B / 74.568 GiB, 0%, 0 B/s, ETA -
Checks:                 0 / 1, 0%
Transferred:            0 / 1, 0%
Elapsed time:         1.0s
Checking:

Transferring:
 * plot-k32-c7-2023-03-11…8a61bb6c66fc76752.plot:  0% /74.568Gi, 0/s, -

2023/03/11 18:28:42 INFO  : 
Transferred:       51.184 MiB / 74.568 GiB, 0%, 21.965 MiB/s, ETA 57m54s
Checks:                 0 / 1, 0%
Transferred:            0 / 1, 0%
Elapsed time:         3.0s
Checking:

Transferring:
 * plot-k32-c7-2023-03-11…8a61bb6c66fc76752.plot:  0% /74.568Gi, 21.965Mi/s, 57m54s

これが私が追加した最後のネットワークインターフェース(eno1)なので、今はアップロードできません。

money@money:~$ rclone move --bind 192.168.1.48 --verbose --transfers 2 --checkers 6 --bwlimit 1G --contimeout 120s --timeout 600s --retries 6 --low-level-retries 20 --buffer-size 128M --drive-chunk-size 128M --stats 1s /media/cache/vipx3 up:
2023/03/11 18:27:52 INFO  : Starting bandwidth limiter at 1Gi Byte/s
2023/03/11 18:27:53 INFO  : 
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         1.0s

2023/03/11 18:27:54 INFO  : 
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         2.0s

2023/03/11 18:27:55 INFO  : 
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         3.0s

2023/03/11 18:27:56 INFO  : 
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         4.0s

eno1トラフィックが独自のゲートウェイ(enp8s0など)を通過する方法は?回線には、独立したISPに接続された独自のルータがあります。これでenp9s0と192.168.1.1を共有しているようです。

ベストアンサー1

eno1のルーターにアクセスして問題を解決し、enp9s0のLANケーブルも削除しました。これは、192.168.1.1を共有し、IPを192.168.2.1に変更し、次の行を追加したためです。

sudo ip route add 192.168.0.0/24 dev enp8s0 src 192.168.0.101 table rt2
sudo ip route add default via 192.168.0.1 dev enp8s0 table rt2
sudo ip rule add from 192.168.0.101/32 table rt2
sudo ip rule add to 192.168.0.101/32 table rt2

問題が発生したときに何か問題が発生した可能性があるため、再起動するたびにenp8s0が無効になり、この問題を解決する方法がまだわかりません。 crontrabを追加しましたが、sudo ifconfig enp8s0 up起動時にまだ表示されませんでした。結局、GUIを介して有効にする必要がありました。動作します。

それから私はこれを追加します

sudo ip route add 192.168.2.0/24 dev eno1 src 192.168.2.36 table rt1
sudo ip route add default via 192.168.2.1 dev eno1 table rt1
sudo ip rule add from 192.168.2.36/32 table rt1
sudo ip rule add to 192.168.2.36/32 table rt1
sudo ip route add default via 192.168.2.1 metric 101 dev eno1

IPルールの結果

0:  from all lookup local
32756:  from all to 192.168.0.101 lookup rt2
32757:  from 192.168.0.101 lookup rt2
32758:  from all to 192.168.2.36 lookup rt1
32759:  from 192.168.2.36 lookup rt1
32760:  from all to 192.168.0.101 lookup rt2
32761:  from 192.168.0.101 lookup rt2
32762:  from all to 192.168.0.101 lookup rt2
32763:  from 192.168.0.101 lookup rt2
32764:  from all to 192.168.2.36 lookup rt1
32765:  from 192.168.2.36 lookup rt1
32766:  from all lookup main
32767:  from all lookup default

IPルーティングのリストです

money@money:~$ ip route list table rt2
default via 192.168.0.1 dev enp8s0 
192.168.0.0/24 dev enp8s0 scope link src 192.168.0.101 
money@money:~$ ip route list table rt1
default via 192.168.2.1 dev eno1 
192.168.2.0/24 dev eno1 scope link src 192.168.2.36 

その後、nload -mを実行するときにenp9s0が使用されていないことを確認して追加しました。

sudo ip route add 192.168.1.0/24 dev enp9s0 src 192.168.1.36 table rt3
sudo ip route add default via 192.168.1.1 dev enp9s0 table rt3
sudo ip rule add from 192.168.1.36/32 table rt3
sudo ip rule add to 192.168.1.36/32 table rt3
sudo ip route add default via 192.168.0.1 metric 100 dev enp8s0
sudo ip route add default via 192.168.1.1 metric 101 dev enp9s0
sudo ip route add default via 192.168.2.1 metric 102 dev eno1

これで、状況は期待どおりに機能します。

おすすめ記事