Networking

創建具有兩個 Internet 連接和一個 LAN 連接的多宿主 linux 負載均衡器

  • May 13, 2016

好的,……這可能已經得到解答,不幸的是,我還沒有找到任何看起來可能是解決方案的東西。

我查看了這些頁面,它們有一些有用的資訊,但不是完整的解決方案:

  1. Linux上的負載平衡和NAT-ing多個ISP連接
  2. 兩個 Internet 連接和 1 個 NIC,可能嗎?
  3. Linux 拆分訪問(帶負載平衡的多個 Internet 連接)
  4. linux防火牆+負載平衡ISP連接

我將使用 Debian 8、Ubuntu 16.04 Desktop 或 Ubuntu 16.04 Server(老實說,很可能是 Debian)。

好的,所以我將安裝三個 NIC,兩個千兆位和板載 100 mbps LAN 連接。ISP 連接將通過兩個 nic 上的 PPPoE 身份驗證使用千兆 LAN 卡(如果這甚至可能,我將滿足於 DSL 調製解調器上的非橋接模式)。並且兩個網路都將分配給它們一個靜態 IP。目前(將會改變)主要連接有一組五個。我需要將來自這些 IP 地址之一的流量路由到網路上的正確伺服器。

以下是我的問題:

  1. 我該如何設置?我是否使用 NATing、IP Chans、IP Masquerading、路由等…?
  2. 如何將從外部進入系統的流量路由到網路上的特定 IP 地址?

請溫柔一點,這是我第一次嘗試這樣的事情:)。

編輯 1

忘記添加網路拓撲:

內部網路佈局

編輯 2

剛剛意識到一些事情…為了進行 PPPoE 身份驗證,我將不得不在特定介面上強制對憑據進行身份驗證。這是怎麼做到的?

我在這裡發布了這個問題:

創建具有兩個 Internet 連接和一個 LAN 連接的多宿主 linux 負載均衡器

更新 1

仍然無法讓多跳循環工作。我嘗試按照以下站點中概述的步驟進行操作,但沒有成功:

  1. Linux上的負載平衡和NAT-ing多個ISP連接
  2. Linux - 雙網際網路連接/負載平衡
  3. HOWTO:使用 Linux 進行多路由

我要麼不斷收到一條消息,說明文件已經存在或設備無效。這是/是我的設置/資訊

配置

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 連接。

我能夠讓路由在一個 WAN 介面上工作並連結到內部 LAN,但是,我無法複製它,也不知道為什麼。

在幾個朋友幫助我研究這個的幫助下,我終於能夠讓它工作了。

必須執行此腳本才能正確轉發 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兩次,果然,兩個介面都在路由流量,因為 whatsmyip 在我刷新後顯示了兩個 IP 地址。

免責聲明這適用於我的特定網路佈局、配置和設置。您的結果可能會有所不同。

引用自:https://serverfault.com/questions/775728