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

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

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

我看过这些页面,它们有一些有用的信息,但没有完整的解决方案:

  1. 在 Linux 上实现负载平衡和 NAT-ing 多个 ISP 连接
  2. 两个 Internet 连接和 1 个 NIC,可以吗?
  3. Linux 分割访问(具有负载平衡的多个互联网连接)
  4. Linux 防火墙 + 负载平衡 ISP 连接

我将使用 Debian 8、Ubuntu 16.04 Desktop 或 Ubuntu 16.04 Server(老实说,最有可能是 Debian)。

好的,我将安装三个网卡,两个千兆位,以及板载 100 mbps LAN 连接。ISP 连接将通过两个网卡上的 PPPoE 身份验证使用千兆 LAN 卡(如果可能的话,否则,我将在 DSL 调制解调器上使用非桥接模式)。并且两个网络都将分配一个静态 IP。目前(将会改变)主连接有一组五个。我需要将来自其中一个 IP 地址的流量路由到网络上的正确服务器。

以下是我的问题:

  1. 我该如何设置?我是否使用 NATing、IP Chans、IP Masquerading、路由等?
  2. 如何将从外部进入系统的流量路由到网络上的特定 IP 地址?

请温柔一点,这是我第一次尝试做这样的事情:)。

编辑1

忘记添加网络拓扑:

内部网络布局

编辑2

刚刚意识到一件事……为了进行 PPPoE 身份验证,我必须在特定接口上强制进行凭据身份验证。该怎么做?

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

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

更新 1

仍然无法使多跳循环工作。我尝试按照以下网站概述的步骤操作,但没有成功:

  1. 在 Linux 上实现负载平衡和 NAT-ing 多个 ISP 连接
  2. Linux - 双互联网连接/负载平衡
  3. 操作方法: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,但是,我无法复制它并且不知道原因。

答案1

在几位朋友的帮助下,我终于能够让它工作了。

为了正确转发 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

然后我安装了互联网服务提供商 (ISP) 余额脚本运行并安装后,我转到WhatsMyIP两次之后果然,两个接口都在路由流量,因为在我点击刷新后,whatsmyip 显示了两个 IP 地址。

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

相关内容