创建具有两个Internet连接和一个LAN连接的多宿主Linux负载均衡器


11

好的,...这可能已经回答了,不幸的是,我没有找到任何看起来像是解决方案的东西。

Ive查看了这些页面,它们提供了一些有用的信息,但没有完整的解决方案:

  1. 在Linux上对多个ISP连接进行负载平衡和NAT处理
  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 Chan,IP伪装,路由等...?
  2. 如何将从外部进入系统的流量路由到网络上的特定IP地址?

请放心,这是我第一次尝试过类似这样的事情:)。

编辑1

忘记添加网络拓扑:

内部网络布局

编辑2

刚刚意识到一些事情...为了进行PPPoE身份验证,我将不得不在特定接口上强制对凭据进行身份验证。怎么做?

我在这里发布了这个问题:

创建具有两个Internet连接和一个LAN连接的多宿主Linux负载均衡器

更新1

仍然无法使多跳循环机制正常工作。我尝试遵循以下站点中概述的步骤,但没有走运:

  1. 在Linux上对多个ISP连接进行负载平衡和NAT处理
  2. Linux-双Internet连接/负载平衡
  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

这是我的内部局域网连接。

我能够使路由在一个WAN接口上工作并链接到内部LAN,但是,我无法复制该路由,也不知道为什么。


我认为您已经在第一个发布的链接中找到了答案。如果服务器在您的LAN上并且具有专用地址,则您肯定需要NAT。基本上,您需要将问题分解为两个问题:1)流量进入,2)流量出现。然后...您是否仅需要它以实现负载平衡或实现高可用性?您需要为不同的提供程序(ip规则)提供不同的路由表,然后标记传入的数据包,以便它们将退回到相同的提供程序。对于传出流量,您可以平衡它。
Jure1873 '16

好吧,...是的,想一想,我将需要能够相应地路由流量(NATing),并且我绝对需要使两个传入的连接负载均衡。因此有效地使速度提高了一倍,而不是单速。我是否在正确考虑?
约翰·舒尔茨

外面有BGP吗?如果您有单独的Internet链接,则只能在传出侧“加倍速度”。传入方将仅跟踪传入的数据包,并确保它们与传入的行在同一行中
出局。– Jure1873

我有点想是这样的。不,我在此位置之外没有BGP:((甚至都不知道它是什么。)
John Schultz

Answers:


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,果然,当我点击刷新后,两个接口都路由了流量,因为whatsmyip显示了两个IP地址。

免责声明这适用于我的特定网络布局,配置和设置。您的结果可能会有所不同。


进行了速度测试...。我的dload流量增加了24%,uload流量增加了90%。
John Schultz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.