두 개의 인터넷 연결과 하나의 LAN 연결로 멀티 홈 리눅스로드 밸런서를 생성


11

알았어 .. 불행히도, 아마도 해결책이 될 것 같은 것을 찾지 못했습니다.

이 페이지들을 살펴 보았고 유용한 정보가 있지만 완전한 해결책은 아닙니다.

  1. Linux에서 여러 ISP 연결의로드 밸런싱 및 NAT 연결
  2. 2 개의 인터넷 연결과 1 개의 NIC가 가능합니까?
  3. Linux 분할 액세스 (로드 밸런싱을 통한 다중 인터넷 연결)
  4. 리눅스 방화벽 +로드 밸런스 ISP 연결

Debian 8, Ubuntu 16.04 Desktop 또는 Ubuntu 16.04 Server (정직하고 대부분의 데비안)를 사용합니다.

기가비트 2 개와 내장 100mbps LAN 연결로 3 개의 NIC를 설치하겠습니다. ISP 연결은 두 nic 모두에서 PPPoE 인증을 통해 기가비트 LAN 카드를 사용합니다 (그렇지 않으면 가능하다면 DSL 모뎀에서 브리징 모드로 설정합니다). 두 네트워크에는 모두 고정 IP가 할당됩니다. 현재 (변경 될) 기본 연결에는 5 개의 그룹이 있습니다. 해당 IP 주소 중 하나에서 들어오는 트래픽을 네트워크의 적절한 서버로 라우팅해야합니다.

내 질문은 다음과 같습니다.

  1. 이것을 어떻게 설정합니까? NATing, IP Chans, IP Masquerading, Routing 등을 사용합니까?
  2. 외부에서 시스템으로 들어오는 트래픽을 네트워크의 특정 IP 주소로 라우팅하려면 어떻게해야합니까?

부디 제발, 이것은 내가 전에 이런 식으로 무언가를 시도한 것은 처음입니다 :).

편집 1

네트워크 토폴로지를 추가하지 않았습니다.

내부 네트워크 레이아웃

편집 2

PPPoE 인증을 수행하려면 특정 인터페이스에서 자격 증명을 강제로 인증해야합니다. 이것은 어떻게 이루어 집니까?

그 질문을 여기에 게시했습니다.

두 개의 인터넷 연결과 하나의 LAN 연결로 멀티 홈 리눅스로드 밸런서를 생성

업데이트 1

여전히 멀티 홉 라운드 로빈을 작동시킬 수 없습니다. 나는 다음 사이트에서 설명한 단계를 행운없이 따르려고 노력했다.

  1. Linux에서 여러 ISP 연결의로드 밸런싱 및 NAT 연결
  2. Linux-이중 인터넷 연결 /로드 밸런싱
  3. 하우투 : 리눅스를 이용한 멀티 라우팅

파일이 이미 존재하거나 유효하지 않은 장치라는 메시지가 계속 나타납니다. 내 설정 / 정보는 다음과 같습니다.

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 연결입니다.

라우팅을 하나의 WAN 인터페이스에서 작동하고 내부 LAN에 연결하도록 할 수 있었지만이를 복제 할 수 없으며 이유를 모릅니다.


귀하가 게시 한 첫 번째 링크에 답이 있다고 생각합니다. 서버가 LAN에 있고 개인 주소가있는 경우 반드시 NAT가 필요합니다. 기본적으로 문제는 1) 들어오는 트래픽, 2) 나오는 트래픽의 두 가지 문제로 나눌 수 있습니다. 그렇다면 ...로드 밸런싱 또는 고 가용성에만 필요합니까? 공급자마다 다른 라우팅 테이블이 있어야하고 (ip 규칙) 들어오는 패킷을 표시하여 패킷이 같은 공급자로 다시 돌아가도록합니다. 나가는 트래픽의 경우 균형을 맞출 수 있습니다.
Jure1873

알았어 ... 그래, 생각 해봐, 트래픽을 적절히 라우팅 할 수 있어야하고 (NATing) 그리고 들어오는 두 연결의로드 밸런싱을 확실히해야한다. 따라서 단일 속도보다는 두 배의 속도를 효과적으로가집니다. 나는 이것에 대해 올바르게 생각하고 있습니까?
John Schultz

외부에 BGP가 있습니까? 별도의 인터넷 링크가있는 경우 발신 측에서 "속도를 두 배"만 할 수 있습니다. 들어오는 쪽은 들어오는 패킷 만 추적하고 들어온 것과 같은 회선으로 나가도록합니다.
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로 두 번 가서 충분히 확인했습니다. 새로 고침 후 whatsmyip이 두 IP 주소를 모두 표시했기 때문에 두 인터페이스 모두 트래픽을 라우팅하고 있습니다.

면책 조항 이것은 특정 네트워크 레이아웃, 구성 및 설정에 효과적이었습니다. 결과는 다를 수 있습니다.


속도 테스트를 수행했습니다. ... 드로드 트래픽이 24 % 증가하고 uload 트래픽이 90 % 증가했습니다.
John Schultz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.