2つのインターネット接続と1つのLAN接続を備えたマルチホームLinuxロードバランサーを作成する


10

ええと、これはおそらく回答されました。残念ながら、私はそれが解決策であると思われるものを見つけていません。

私はこれらのページを見て、それらにはいくつかの有用な情報がありますが、完全な解決策ではありません:

  1. Linuxでの複数のISP接続の負荷分散とNAT処理
  2. 2つのインターネット接続と1つのNICが可能ですか?
  3. Linux分割アクセス(複数のインターネット接続と負荷分散)
  4. Linuxファイアウォール+負荷分散ISP接続

私はDebian 8、Ubuntu 16.04デスクトップまたはUbuntu 16.04サーバー(正直なところ、おそらくDebian)を使用します。

では、2つのギガビットと3つのNICを搭載し、100 MbpsのオンボードLAN接続をオンボードにします。ISP接続は、両方のNICでPPPoE認証を介してギガビットLANカードを使用します(これが可能でない場合でも、DSLモデムの非ブリッジモードを使用します)。また、両方のネットワークに静的IPが割り当てられます。現在(変更されます)、プライマリ接続には5つのグループがあります。これらのIPアドレスのいずれかに着信するトラフィックを、ネットワーク上の適切なサーバーにルーティングする必要があります。

ここに私の質問があります:

  1. どうすれば設定できますか?NATing、IP Chans、IPマスカレード、ルーティングなどを使用していますか?
  2. システムに入ってくるトラフィックを外部からネットワーク上の特定のIPアドレスにルーティングするにはどうすればよいですか?

優しくしてください、これは私が以前にこのようなことを試みたのは初めてです:)。

編集1

ネットワークトポロジを追加するのを忘れました:

内部ネットワークのレイアウト

編集2

何かに気付いた... PPPoE認証を行うために、特定のインターフェイスで資格情報の認証を強制する必要があります。これはどのように行われますか?

私はその質問をここに投稿しました:

2つのインターネット接続と1つのLAN接続を備えたマルチホームLinuxロードバランサーを作成する

アップデート1

それでもマルチホップラウンドロビンを機能させることができません。次のサイトに記載されている手順を試してもうまくいきませんでした。

  1. Linuxでの複数のISP接続の負荷分散とNAT処理
  2. Linux-デュアルインターネット接続/負荷分散
  3. HOWTO:Linuxでのマルチルーティング

ファイルが既に存在するか、デバイスが無効であるというメッセージが表示され続ける。ここに/私の設定/情報があります

IFCONFIG

eth0      Link encap:Ethernet  HWaddr ec:08:6b:04:8e:ac  
          inet addr:172.16.0.2  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::ee08:6bff:fe04:8eac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9525 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7722 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9306973 (8.8 MiB)  TX bytes:949815 (927.5 KiB)

eth1      Link encap:Ethernet  HWaddr ec:08:6b:04:8c:95  
          inet addr:172.16.1.2  Bcast:172.16.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ee08:6bff:fe04:8c95/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:558 (558.0 B)  TX bytes:6344 (6.1 KiB)

eth2      Link encap:Ethernet  HWaddr 00:16:76:90:49:b7  
          inet addr:172.16.2.1  Bcast:172.16.2.255  Mask:255.255.255.0
          inet6 addr: fe80::216:76ff:fe90:49b7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3793 errors:0 dropped:0 overruns:0 frame:0
          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:283119 (276.4 KiB)  TX bytes:10338 (10.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:1858 (1.8 KiB)  TX bytes:1858 (1.8 KiB)

インターフェース設定

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 172.16.0.2
    netmask 255.255.255.0
    gateway 172.16.0.1
    network 172.16.0.0
    broadcast 172.16.0.255

auto eth1
allow-hotplug eth1
iface eth1 inet static
    address 172.16.1.2
    netmask 255.255.255.0
    gateway 172.16.1.1
    network 172.16.1.0
    broadcast 172.16.1.255

auto eth2
allow-hotplug eth2
iface eth2 inet static
    address 172.16.2.1
    netmask 255.255.255.0
    network 172.16.2.0
    broadcast 172.16.2.255

ETH0

これが私のプライマリWAN接続です。

ETH1

これが私のセカンダリWAN接続です。

ETH2

これは私の内部LAN接続です。

ルーティングを1つのWANインターフェイスで機能させ、内部LANにリンクさせることができましたが、それを複製することができず、理由がわかりません。


あなたが投稿した最初のリンクに答えがあると思います。サーバーがLAN上にあり、プライベートアドレスがある場合は、必ずNATが必要です。基本的に、問題を2つの問題に分割する必要があります。1)着信トラフィック、2)発信トラフィック。それでは...負荷分散のためだけに必要ですか、それとも高可用性のために必要ですか?プロバイダーごとに異なるルーティングテーブル(ipルール)を用意し、着信パケットにマークを付けて、同じプロバイダーに戻されるようにする必要があります。発信トラフィックについては、バランスをとることができます。
Jure1873

OK、...はい、考えてみてください。それに応じてトラフィックをルーティングできるようにする必要があり(NATing)、2つの着信接続の負荷を確実に分散させる必要があります。つまり、シングルスピードではなく、実質的に2倍のスピードになります。私はこれについて正しく考えていますか?
John Schultz

外側にBGPはありますか?別のインターネットリンクがある場合は、発信側でのみ「速度を2倍にする」ことができます。入射側にのみ着信パケットを追跡し、彼らが来た彼らが同じ行に出かけるになるだろう。
Jure1873

私はそれが事実だと考えました。いいえ、この場所の外にBGPはありません:((それが何であるかさえ知らないでください)
John Schultz

回答:


4

これを研究するのを助けている数人の友人の助けを借りて、私は最終的にそれを機能させることができました。

TCP / IPトラフィックを適切に転送するには、このスクリプトを実行する必要がありました。

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

# Primary Connection - 2085426230
   IF1=eth0
   IP1=172.16.0.2
    P1=172.16.0.1
P1_NET=172.16.0.0

# Secondary Connection - 2085420213
   IF2=eth1
   IP2=172.16.1.2
    P2=172.16.1.1
P2_NET=172.16.1.0

# Local Network
   IF3=eth2
   IP3=172.16.2.2
    P3=172.16.2.1
P3_NET=172.16.2.0

T1=WAN1
T2=WAN2

# delete all existing rules.
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback and WAN traffic
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i ${IF1} -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ${IF1} -o ${IF3} -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i ${IF3} -o ${IF1} -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o ${IF1} -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

次に、Net-ISP-Balanceをインストールしました。スクリプトを実行してインストールしたら、WhatsMyIPに 2回行ったところ、確信が持てました。リフレッシュを実行した後、whatsmyipが両方のIPアドレスを表示したため、両方のインターフェイスがトラフィックをルーティングしています。

免責事項これは、特定のネットワークレイアウト、構成、設定で機能しました。結果は異なる場合があります。


速度テストを行いました...私のdloadトラフィックは24%増加し、uloadトラフィックは90%増加しています。
John Schultz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.