Score:0

วิธีเข้าถึงเซิร์ฟเวอร์ Ubuntu บน IP สาธารณะที่แตกต่างกันสองรายการ

ธง cn

ฉันกำลังดิ้นรนกับปัญหาปัจจุบัน:

ข้อมูลความเป็นมา: Ubuntu 20.04 บนเดลล์ R710

ฉันมี 2 การเชื่อมต่ออินเทอร์เน็ตที่แตกต่างกันกับ 2 เราเตอร์ที่จัดหาโดย isp ฉันได้เชื่อมต่อ eno2 กับเราเตอร์ isp1 และรับ 192.168.2.102 ip ผ่านการเช่า dhcp แบบถาวร ฉันได้เชื่อมต่อ eno3 กับเราเตอร์ isp2 และรับ 192.168.88.254 ip ผ่านการเช่า dhcp แบบถาวร

ไอพี

1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
       valid_lft ตลอดไป reserved_lft ตลอดไป
    inet6 ::1/128 ขอบเขตโฮสต์
       valid_lft ตลอดไป reserved_lft ตลอดไป
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group เริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ d4:be:d9:ee:7b:75 brd ff:ff:ff:ff:ff:ff
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ d4:be:d9:ee:7b:77 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.102/24 brd 192.168.2.255 ขอบเขต global dynamic noprefixroute eno2
       valid_lft 41588วินาทีที่ต้องการ_lft 41588วินาที
    inet6 fe80::d6be:d9ff:feee:7b77/64 ลิงค์ขอบเขต
       valid_lft ตลอดไป reserved_lft ตลอดไป
4: eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ d4:be:d9:ee:7b:79 brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.254/24 brd 192.168.88.255 ขอบเขต global dynamic noprefixroute eno3
       valid_lft 486 วินาทีที่ต้องการ_lft 486 วินาที
    inet6 fe80::d6be:d9ff:feee:7b79/64 ลิงค์ขอบเขต
       valid_lft ตลอดไป reserved_lft ตลอดไป
5: eno4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ d4:be:d9:ee:7b:7b brd ff:ff:ff:ff:ff:ff
...

netstat -rn

ตารางเส้นทางเคอร์เนล IP
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะหน้าต่าง MSS irtt Iface
0.0.0.0 192.168.88.1 0.0.0.0 UG 0 0 0 eno3
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 เอโน2
172.17.0.0 0.0.0.0 255.255.0.0 คุณ 0 0 0 นักเทียบท่า 0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
192.168.88.0 0.0.0.0 255.255.255.0 U 0 0 0 eno3

ปัญหาคือฉันสามารถเข้าถึงเซิร์ฟเวอร์ได้เพียง 1 (สุ่ม) IP สาธารณะต่อครั้งหากอยู่นอก LAN หากสามารถเข้าถึง 77.xx.xx.158 (isp 2) ได้ 5.xx.xx.55 (isp 1) จะไม่สามารถเข้าถึงได้ และในทางกลับกัน ให้สุ่มหลังจากการบู๊ตแต่ละครั้ง

ฉันต้องสามารถเข้าถึงเซิร์ฟเวอร์บน IP สาธารณะใดก็ได้ในเวลาที่กำหนด

ขอขอบคุณล่วงหน้าสำหรับวิธีแก้ปัญหาที่เป็นไปได้

FedKad avatar
cn flag
นี่เป็นเรื่องปกติ เนื่องจากแพ็กเก็ตอาจถูกกำหนดเส้นทางผ่านอินเทอร์เฟซใดก็ได้ในสองอินเทอร์เฟซ (และไม่มีการกำหนดค่าตามความชอบ) คุณ "เข้าถึง" เซิร์ฟเวอร์ของคุณได้อย่างไร หากเป็น ssh คุณอาจเริ่มอินสแตนซ์หนึ่งของการฟัง ssh บนพอร์ตที่บอกว่า 22 และเชื่อมโยงกับอินเทอร์เฟซหนึ่ง และอีกอินสแตนซ์ที่ฟังพอร์ตอื่น (เช่น 2222) และเชื่อมโยงกับอินเทอร์เฟซอื่น
Score:1
ธง br

คุณมีเส้นทางเริ่มต้นสองเส้นทางในการชนกัน:

ตารางเส้นทางเคอร์เนล IP
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะหน้าต่าง MSS irtt Iface
0.0.0.0 192.168.88.1 0.0.0.0 UG 0 0 0 eno3
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 เอโน2

นี่เป็นสถานการณ์ที่ไม่ปกติ พีซี/เซิร์ฟเวอร์ของคุณสับสนเนื่องจากไม่มีกฎที่แน่นอนสำหรับการตัดสินใจว่าควรใช้อินเทอร์เฟซใดในสองอินเทอร์เฟซเป็นเกตเวย์สู่อินเทอร์เน็ต การตัดสินใจกำหนดเส้นทางขึ้นอยู่กับเมตริกที่ตั้งค่าแบบไดนามิกให้กับอินเทอร์เฟซหรือปัจจัยอื่นๆ ซึ่งสามารถเปลี่ยนแปลงแบบสุ่มได้ ดังนั้นบางครั้งจึงต้องการอินเทอร์เฟซ eno2 และบางครั้ง eno3 เป็นเกตเวย์หลัก

ฉันคิดว่าแพ็กเก็ตขาเข้าจากภายนอกสู่ภายในเข้าถึงเซิร์ฟเวอร์ของคุณโดยถูกต้องตามที่อยู่ IP ที่ใช้เป็นปลายทาง (จากมุมมองของผู้ใช้ภายนอก)

  • แพ็คเก็ต SYN TCP ที่ส่งจากอินเทอร์เน็ตไปยังที่อยู่สาธารณะของ ISP1 จะผ่าน eno2
  • แพ็กเก็ต SYN TCP ที่ส่งจากอินเทอร์เน็ตไปยังที่อยู่สาธารณะของ ISP2 จะผ่าน eno3

คุณสามารถตรวจสอบได้โดยใช้ Wireshark หรือ Tshark หรือ tcpdump

แต่แพ็กเก็ตตอบกลับ (SYN ACK TCP) จะถูกส่งกลับผ่านเกตเวย์หลักที่ระบบเลือกในขณะนั้นเท่านั้น แนะนำให้ใช้เพียงหนึ่ง GW จากสอง และไม่ใช้วินาทีในเวลาเดียวกัน (ยกเว้นกรณีที่คุณตั้งค่าพิเศษบางอย่าง) หมายความว่าการเชื่อมต่อที่กำหนดเป้าหมายไปยังอินเทอร์เฟซหนึ่งทำงานได้ดี แต่การเชื่อมต่อที่สองตอบสนองผ่านอินเทอร์เฟซที่ไม่ถูกต้อง สถานการณ์นี้เรียกว่า "การกำหนดเส้นทางแบบอสมมาตร" แพ็กเกตเข้าทาง eno3 และตอบกลับทาง eno2 เช่น

ผู้ให้บริการมักจะตรวจสอบและทิ้งแพ็กเก็ตดังกล่าวเนื่องจากดูเหมือนว่าเป็นการโจมตีเครือข่าย ที่อยู่ IP ต้นทางไม่ตรงกับที่อยู่เครือข่ายของอินเทอร์เฟซต้นทาง

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

สามารถแก้ไขสถานการณ์ได้โดยการกำหนดเส้นทางขั้นสูง (เช่นการกำหนดเส้นทางตามนโยบายและตาราง/กฎการกำหนดเส้นทางแยกพิเศษสำหรับแต่ละอินเทอร์เฟซ) ค้นหาตัวอย่าง iproute2

บางทีลิงก์เหล่านี้อาจช่วยคุณได้:

https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System

https://tweenpath.net/multiple-default-gateways-system/

Dan Hendli avatar
cn flag
ขอขอบคุณ! ฉันจะตรวจสอบเรื่องนี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา