เชื่อมต่อเครื่อง Linux กับเราเตอร์ / ISP รอง: วิธีการตั้งค่าการกำหนดเส้นทางอย่างถูกต้อง?


8

นามธรรม:

ฉันมีปัญหา (ฉันคิดว่าการกำหนดเส้นทาง) เมื่อเพิ่ม ISP สำรองไปยังการตั้งค่าเครือข่ายที่มีอยู่ของฉัน: Router1ไม่มีการตอบรับทราฟฟิกขาเข้า แต่ทราฟฟิกภายในและขาเข้าผ่านRouter0ทำงานได้ดี

ฉันจะทำให้ชิ้นส่วนที่ทำงานได้ดีอยู่ในขณะนี้ในขณะที่ทราฟฟิกขาเข้าผ่านRouter1งานได้อย่างไร

รายละเอียดเพิ่มเติม:

ฉันได้วาดไดอะแกรมด้านล่างพร้อมสิ่งจำเป็นพื้นฐานของสถานการณ์ (ในทางปฏิบัติมีอุปกรณ์เพิ่มเติมในแต่ละ LAN แต่พวกเขาไม่สำคัญ)

นี่คือสถานการณ์:

  • ฉันมีสองเครือข่ายภายใน: LAN0ถูก192.168.x.0/24และเป็นLAN1 192.168.y.0/24ทั้งสองทำงานได้ดีสำหรับการรับส่งข้อมูลภายใน (เช่นhttpโดยใช้cURL )
  • LAN0ได้เสมอเชื่อมต่อผ่านRouter0และไปISP0Internet
  • LAN1มักจะมีRouter1แต่มีการเชื่อมต่อตอนนี้ผ่านไปISP1Internet
  • เครื่องเท่านั้นLAN0และมีเส้นทางเริ่มต้นผ่านการRouter0ทำงานที่ดีสำหรับการรับส่งข้อมูลขาออกและขาเข้า
  • เครื่องเท่านั้นLAN1และมีเส้นทางเริ่มต้นผ่านการRouter1ทำงานที่ดีสำหรับการรับส่งข้อมูลขาออกและขาเข้า
  • การจราจรภายในLAN0และLAN1ยังทำงานได้ดีอยู่เสมอ
  • การรับส่งข้อมูลขาเข้าRouter1สำหรับการWindowsBมาถึงถูกต้อง: ฉันสามารถเชื่อมต่อผ่าน RDP WindowsCได้
  • การรับส่งข้อมูลขาเข้าRouter1สำหรับการLinuxBมาถึง (ตามtcpdump ) แต่ไม่ตอบกลับเป็นรายการcurl http://e.f.g.hfron ที่LinuxCมีtcpdump ใน LinuxBรายการ:

มันแสดงเฉพาะแพ็กเก็ตที่ - ตามรูปแบบเอาต์พุต tcpdump - มีชุดแฟล็ก SYN :

LinuxB:/tmp/LinuxB.eth1.80 # tcpdump -i eth1 'port 80'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:35:19.489779 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047182 ecr 0,sackOK,eol], length 0
13:35:19.788841 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047478 ecr 0,sackOK,eol], length 0
13:35:19.888835 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047578 ecr 0,sackOK,eol], length 0
13:35:19.989412 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047678 ecr 0,sackOK,eol], length 0
13:35:20.089685 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047778 ecr 0,sackOK,eol], length 0
13:35:20.190836 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287047877 ecr 0,sackOK,eol], length 0
13:35:20.392123 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 1287048072 ecr 0,sackOK,eol], length 0
13:35:20.693692 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:21.197162 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:22.204134 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:24.115961 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:27.852374 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0
13:35:31.967049 IP i.j.k.l.57512 > 192.168.y.2.http: Flags [S], seq 816356596, win 65535, options [mss 1460,sackOK,eol], length 0

นี่คือLinuxBตารางเส้นทาง:

LinuxB:/tmp/LinuxB.eth1.80 # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.x.1     0.0.0.0         UG    0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
link-local      *               255.255.0.0     U     0      0        0 eth0
192.168.x.0     *               255.255.255.0   U     0      0        0 eth0
192.168.x.0     *               255.255.255.0   U     0      0        0 eth1

เนื่องจากการเชื่อมต่อผ่าน RDP จากWindowsCไปใช้WindowsBงานได้ดีฉันจึงกลับมาใช้งานอีกครั้งซึ่งเป็นปัญหาการกำหนดเส้นทาง นี่คือWindowsBตารางเส้นทาง:

C:\temp>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0c 29 35 77 e1 ...... AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
0x3 ...00 0c 29 35 77 eb ...... VMware Accelerated AMD PCNet Adapter - Packet Scheduler Miniport
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.x.1     192.168.x.4      10
          0.0.0.0          0.0.0.0      192.168.y.1     192.168.y.4       5
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.x.0    255.255.255.0      192.168.x.4     192.168.x.4      10
      192.168.x.4  255.255.255.255        127.0.0.1       127.0.0.1      10
    192.168.x.255  255.255.255.255      192.168.x.4     192.168.x.4      10
      192.168.y.0    255.255.255.0      192.168.y.4     192.168.y.4      10
      192.168.y.4  255.255.255.255        127.0.0.1       127.0.0.1      10
    192.168.y.255  255.255.255.255      192.168.y.4     192.168.y.4      10
        224.0.0.0        240.0.0.0      192.168.x.4     192.168.x.4      10
        224.0.0.0        240.0.0.0      192.168.y.4     192.168.y.4      10
  255.255.255.255  255.255.255.255      192.168.x.4     192.168.x.4       1
  255.255.255.255  255.255.255.255      192.168.y.4     192.168.y.4       1
Default Gateway:       192.168.y.1
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
          0.0.0.0          0.0.0.0      192.168.y.1       5
          0.0.0.0          0.0.0.0      192.168.x.1      10

ดังนั้นฉันจะทำให้การกำหนดเส้นทางLinuxBเป็นเช่นนี้ได้อย่างไร:

  • ใช้เส้นทางเริ่มต้นในLinuxBการ192.168.x.1จราจรขาออกดังนั้นการใช้Router0/ISP0
  • คอยตอบคำขอที่เข้ามาจากLAN0บนLAN0
  • คอยตอบคำขอที่เข้ามาจากLAN1บนLAN1
  • ให้ตอบคำขอที่เข้ามาผ่านRouter0( a.b.c.d/ 192.168.x.1) ผ่านทาง192.168.x.1
  • เริ่มตอบคำขอที่เข้ามาผ่านRouter1( e.f.g.h/ 192.168.y.1) ผ่านทาง192.168.y.1
  • โบนัส: Router1ล้มเหลวหรือโหลดบาลานซ์ด้วยRouter0

Postscript:

PNG ภาพด้านล่างจะถูกสร้างขึ้นในUMLข้อความผ่านออนไลน์ฟรีPlantUMLเครื่องยนต์ หากคุณต้องการที่จะเห็นข้อความ UML เดิมที่วางการเชื่อมโยงภาพ PNGเป็นแบบนี้แบบฟอร์ม PlantUMLSubmitจากนั้นกด

ป้อนคำอธิบายรูปภาพที่นี่


พบเพียงคำตอบที่น่าสนใจที่unix.stackexchange.com/a/23345/69111yastที่ฉันตรวจสอบเพื่อดูว่าจะนำไปใช้กับกรณีของฉันและวิธีการที่จะใช้มันโดยใช้
Jeroen Wiert Pluimers

1
Yastดูเหมือนว่าออกมาเพื่อทำเส้นทางที่ซับซ้อนและดูเหมือนว่าจะเลิกในความโปรดปรานของroute ipดูopensuse.14.x6.nabble.com/yast2-advanced-routing-td3083578.htmlและsuse.com/documentation/sles11/book_sle_admin/data/ …
Jeroen Wiert Pluimers

1
โซลูชันที่ลิงก์ของคุณที่ unix.stackexchange กำลังดำเนินไปในทิศทางที่ถูกต้องและจะแก้ปัญหาของ linux - โหนด linux มีตารางเส้นทางแยกกันสองตารางและใช้ตารางที่เหมาะสมโดยขึ้นอยู่กับว่าการเชื่อมต่อเริ่มขึ้นที่ใด ฉันไม่ทราบวิธีแก้ปัญหาดังกล่าวสำหรับ Windows เว้นแต่จะมีความต้องการที่แท้จริงสำหรับเครือข่ายย่อยสองแห่งฉันจะกำจัดหนึ่งและใช้หนึ่งเราเตอร์สำหรับ ISP ทั้งสอง คุณสามารถซื้อเราเตอร์ที่สามารถจัดการกับ WAN สองตัวได้อย่างเหมาะสมหรือคุณสามารถใช้ระบบ Linux อื่นเพื่อทำมันซึ่งจะทำให้การกำหนดเส้นทางบนระบบด้านหลังทำได้ง่ายขึ้น
David Mackintosh

@DavidMackintosh ในอนาคตฉันจะ นี่เป็นชั่วคราว: ไฟเบอร์เป็น DSL จริงและจะย้ายไปยังที่อยู่ไฟเบอร์อื่น เครื่องเป็น DNS และ MX ดังนั้นฉันต้องการให้สามารถเข้าถึงได้จาก ISP สองเครื่องที่จะมีความต่อเนื่องเนื่องจากฉันไม่แน่ใจว่า DSL จะปิดก่อนหรือหลังจากที่ไฟเบอร์เริ่มทำงาน
Jeroen Wiert Pluimers

คำตอบ:


1

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

  1. ฉันมีตารางเส้นทางหนึ่งตารางต่อการอัปลิงค์ (เส้นทาง IP ... ตาราง 101, เส้นทาง IP ... ตารางที่ 102) สิ่งนั้นจะเข้าสู่ / etc / iproute2 / rt_tables

    101 isp1 102 isp2

    คุณต้องตั้งค่าตารางเหล่านั้นด้วย:

    เส้นทาง ip เพิ่มค่าเริ่มต้นผ่านทาง $ Gateway1 dev $ Interface1 table isp1 เส้นทาง ip เพิ่มค่าเริ่มต้นผ่านทาง $ Gateway2 dev $ Interface2 ตาราง isp2

    # อย่าลืมตารางเริ่มต้น:

    เส้นทาง ip เพิ่มค่าเริ่มต้นผ่านทาง $ DefaultGateway dev $ DefaultInterface

  2. เปิดใช้งานการติดตามการเชื่อมต่อ iptables (modprobe nf_conntrack)

  3. ตั้งค่ากฎ iptables สำหรับการเชื่อมต่อขาเข้าใหม่เป็น -j MARK แพ็กเก็ตอย่างใด (เช่น: 0x201, 0x202)
  4. ตั้งค่ากฎ ip เพื่อให้แน่ใจว่าทราฟฟิกหมดเวลาที่อินเตอร์เฟสใช้ตารางเส้นทางที่ถูกต้อง

    กฎ ip เพิ่มจาก $ Ip1 ตาราง isp1 กฎ ip เพิ่มจาก $ ip2 ตาราง isp2

  5. ตั้งค่ากฎ ip (เพิ่มกฎ ip ... ) ระบุว่า "แพ็กเก็ตที่ทำเครื่องหมาย 0x201 จะค้นหาตารางเส้นทาง 201" หนึ่งกฎสำหรับทุกอัปลิงค์

ด้วยทุกสิ่งในสถานที่คุณควรจะสามารถรับและเริ่มต้นการเชื่อมต่อกับอัปลิงค์ wan ใด ๆ และแม้กระทั่งสมดุลการเชื่อมต่อขาออก

สิ่งเหล่านั้นจะเป็นพื้นฐาน Iptables + "เส้นทาง ip" + "กฎ ip" และคุณก็พร้อมใช้งาน

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