สร้างตัวโหลดบาลานซ์ลินุกซ์แบบหลาย homed พร้อมการเชื่อมต่ออินเทอร์เน็ตสองจุดและการเชื่อมต่อ LAN หนึ่งจุด


11

ตกลง ... นี่อาจจะเป็นคำตอบโชคไม่ดีที่ฉันไม่พบอะไรที่ดูเหมือนว่ามันอาจจะเป็นความละเอียด

ฉันได้ดูหน้าเหล่านี้แล้วและพวกเขามีข้อมูลที่เป็นประโยชน์ แต่ไม่ได้แก้ปัญหาให้สมบูรณ์:

  1. โหลดบาลานซ์ & NAT-ing เชื่อมต่อ ISP หลายรายการบน Linux
  2. สองการเชื่อมต่ออินเทอร์เน็ตและ 1 NIC เป็นไปได้หรือไม่
  3. การเข้าถึงแบบแบ่ง Linux (การเชื่อมต่ออินเทอร์เน็ตหลายจุดพร้อมภาระสมดุล)
  4. linux firewall + load balance การเชื่อมต่อ ISP

ฉันจะใช้เดเบียน 8, Ubuntu 16.04 เดสก์ท็อปหรือเซิร์ฟเวอร์ Ubuntu 16.04

ตกลงดังนั้นฉันจะมี NIC สามตัวติดตั้งสองกิกะบิตและการเชื่อมต่อ LAN 100 mbps การเชื่อมต่อ ISP จะใช้การ์ด gigabit LAN ผ่านการตรวจสอบความถูกต้องของ PPPoE บน nics ทั้งสอง (หากเป็นไปได้ยิ่งกว่านั้นเป็นอย่างอื่นฉันจะชำระสำหรับโหมดการเชื่อมต่อที่ไม่ใช่ในโมเด็ม DSL) และเครือข่ายทั้งสองจะมี IP แบบคงที่ที่กำหนดให้กับพวกเขา ปัจจุบัน (ซึ่งจะเปลี่ยน) การเชื่อมต่อหลักมีกลุ่มห้า ฉันต้องการกำหนดเส้นทางทราฟฟิกที่มาจากหนึ่งในที่อยู่ IP เหล่านั้นไปยังเซิร์ฟเวอร์ที่เหมาะสมในเครือข่าย

นี่คือคำถามของฉัน:

  1. ฉันจะตั้งค่านี้ได้อย่างไร ฉันจะใช้ NATing, IP Chans, IP Masquerading, Routing เป็นต้นหรือไม่?
  2. ฉันจะกำหนดเส้นทางการรับส่งข้อมูลที่เข้าสู่ระบบจากภายนอกไปยังที่อยู่ IP เฉพาะบนเครือข่ายได้อย่างไร

โปรดอย่าลังเลนี่เป็นครั้งแรกที่ฉันได้ลองทำสิ่งใด ๆ ก่อนหน้านี้ :)

แก้ไข 1

ลืมเพิ่มโทโพโลยีเครือข่าย:

เค้าโครงเครือข่ายภายใน

แก้ไข 2

เพิ่งรู้อะไรบางอย่าง ... เพื่อที่จะทำการตรวจสอบ PPPoE ฉันจะต้องบังคับใช้การรับรองความถูกต้องของข้อมูลประจำตัวในส่วนต่อประสานที่เฉพาะเจาะจง สิ่งนี้ทำได้อย่างไร

ฉันโพสต์คำถามนั้นที่นี่:

สร้างตัวโหลดบาลานซ์ลินุกซ์แบบหลาย homed พร้อมการเชื่อมต่ออินเทอร์เน็ตสองจุดและการเชื่อมต่อ LAN หนึ่งจุด

อัพเดท 1

ยังไม่สามารถใช้งาน multihop round robin ได้ ฉันพยายามทำตามขั้นตอนที่อธิบายไว้ในเว็บไซต์ต่อไปนี้โดยไม่มีโชค:

  1. โหลดบาลานซ์ & NAT-ing เชื่อมต่อ ISP หลายรายการบน Linux
  2. Linux - การเชื่อมต่ออินเทอร์เน็ตคู่ / การปรับสมดุลโหลด
  3. HOWTO: Multirouting กับ 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 ภายในของฉัน

ฉันสามารถกำหนดเส้นทางเพื่อทำงานบนหนึ่งอินเทอร์เฟซ 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

จากนั้นผมติดตั้งสุทธิ ISP สมดุล เมื่อสคริปต์รันและติดตั้งฉันไปที่WhatsMyIPสองครั้งและเพียงพอทั้งสองอินเตอร์เฟสกำลังกำหนดเส้นทางการรับส่งข้อมูลขณะที่ whatsmyip แสดงที่อยู่ IP ทั้งสองหลังจากที่ฉันกดรีเฟรช

การปฏิเสธความรับผิดสิ่งนี้ใช้ได้กับโครงร่างเครือข่ายการกำหนดค่าและการตั้งค่าเฉพาะของฉัน ผลลัพธ์ของคุณอาจแตกต่างกันไป


ทำการทดสอบความเร็ว .... ฉันเพิ่มปริมาณข้อมูล dload 24% และเพิ่มปริมาณข้อมูล ulload ของฉันขึ้น 90%
John Schultz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.