Score:0

เซิร์ฟเวอร์ Linux ละเว้นแพ็กเก็ตจากเกตเวย์

ธง ke
ENM

ฉันมีเซิร์ฟเวอร์ Proxmox Linux ซึ่งสามารถส่งและรับแพ็กเก็ตไปยังโฮสต์บนเครือข่ายท้องถิ่น แต่จะไม่ประมวลผลแพ็กเก็ตจากเกตเวย์ สิ่งนี้ทำให้การรับส่งข้อมูลทางอินเทอร์เน็ตล้มเหลว ดังนั้นฉันจึงไม่สามารถเรียกใช้ apt เพื่ออัปเดตแพ็คเกจได้ ดูเหมือนว่าโปรโตคอลทั้งหมดจะได้รับผลกระทบ

VM ที่ทำงานบนเซิร์ฟเวอร์ สามารถ เข้าถึงเกตเวย์ได้ดี

ไฟล์ /etc/network/interfaces ของฉันประกอบด้วย:

อัตโนมัติ
iface lo inet ย้อนกลับ

คู่มือการใช้งาน iface enp10s0 inet

vmbr0 อัตโนมัติ
iface vmbr0 inet แบบคงที่
    ที่อยู่ 10.0.1.200/24
    เกตเวย์ 10.0.1.1
    bridge_ports enp10s0
    ปิด bridge_stp
    บริดจ์_fd 0

wlp7s0 อัตโนมัติ
iface wlp7s0 inet แบบคงที่
    hostapd /etc/hostapd/hostapd.conf
    ที่อยู่ 10.0.2.1
    เน็ตมาสก์ 255.255.255.0

vmbr1 อัตโนมัติ
iface vmbr1 inet แบบคงที่
    ที่อยู่ 10.1.2.1
    เน็ตมาสก์ 255.255.255.0
    ไม่มี bridge_ports
    ปิดสะพาน
    บริดจ์-fd 0

    โพสต์อัพ echo 1 > /proc/sys/net/ipv4/ip_forward
    โพสต์อัพ iptables -t nat -A POSTROUTING -s '10.1.2.0/24' -o wlp7s0 -j ​​MASQUERADE
    โพสต์ลง iptables -t nat -D POSTROUTING -s '10.1.2.0/24' -o wlp7s0 -j ​​MASQUERADE

wlp7s0 และ vmbr1 เป็น NAT เพื่ออนุญาตให้ VM เข้าถึงอุปกรณ์ IOT ไร้สายที่ไม่ควรเข้าถึงเครือข่าย/อินเทอร์เน็ตทั่วไป

ตารางเส้นทางของฉัน:

เส้นทาง $ ip
ค่าเริ่มต้นผ่าน 10.0.1.200 dev vmbr0 เมตริก 100 
10.0.1.0/24 dev vmbr0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.1.200 
10.0.2.0/24 dev wlp7s0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.2.1 
10.1.2.0/24 dev vmbr1 โปรโตเคอร์เนลขอบเขตลิงก์ src 10.1.2.1

หลังจากอ่านจบ ฉันลองเปลี่ยน rp_filter แต่การเปลี่ยนค่าจาก 2 เป็น 0 ไม่ได้ผล การตั้งค่าเริ่มต้น (โดยนำอินเทอร์เฟซ VM ออก):

$ sysctl -a | grep \.rp_filter
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.enp10s0.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.vmbr0.rp_filter = 0
net.ipv4.conf.vmbr1.rp_filter = 0
net.ipv4.conf.wlp7s0.rp_filter = 0

ip_forward ถูกตั้งค่า:

$ cat /proc/sys/net/ipv4/ip_forward
1

ฉันได้ตรวจสอบผ่าน tcpdump ว่าได้รับแพ็กเก็ตจากเกตเวย์ เมื่อฉันลองส่ง Ping จากเซิร์ฟเวอร์ไปยังเกตเวย์ หรือจากเซิร์ฟเวอร์ไปยังเกตเวย์ ตัวอย่างนี้ใช้ ping:

# tcpdump -n -i vmbr0 โฮสต์ 10.0.1.1 และ icmp
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง vmbr0, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
22:42:37.136341 IP 10.0.1.200 > 10.0.1.1: คำขอเสียงสะท้อน ICMP, id 22073, seq 1, ความยาว 64
22:42:37.136478 IP 10.0.1.1 > 10.0.1.200: ICMP echo reply, id 22073, seq 1, length 64
22:42:38.142240 IP 10.0.1.200 > 10.0.1.1: คำขอเสียงสะท้อน ICMP, id 22073, seq 2, ความยาว 64
22:42:38.142429 IP 10.0.1.1 > 10.0.1.200: ICMP echo reply, id 22073, seq 2, length 64

ผลลัพธ์ของ ping -v นั้นว่างเปล่า:

$ ping -v 10.0.1.1
PING 10.0.1.1 (10.0.1.1) 56(84) ไบต์ของข้อมูล
^ซี
--- สถิติ ping 10.0.1.1 ---
ส่ง 22 แพ็กเก็ต ได้รับ 0 แพ็กเก็ต สูญเสียแพ็กเก็ต 100% เวลา 511 มิลลิวินาที

รายการเดียวในตาราง ip คือ NAT:

# iptables-save -c
# สร้างโดย iptables-save v1.8.2 เมื่อวันเสาร์ที่ 29 มกราคม 22:45:46 น. 2565
*ดิบ
: ยอมรับ [1828405583:1847667077335]
: ยอมรับเอาต์พุต [10762322:981310704]
ให้สัญญา
# เสร็จสิ้นเมื่อวันเสาร์ที่ 29 มกราคม 22:45:46 น. 2565
# สร้างโดย iptables-save v1.8.2 เมื่อวันเสาร์ที่ 29 มกราคม 22:45:46 น. 2565
*กรอง
: ยอมรับอินพุต [10597558:1212589593]
:ส่งต่อ ยอมรับ [1782904005:1841102268241]
: ยอมรับเอาต์พุต [10762351:981313827]
ให้สัญญา
# เสร็จสิ้นเมื่อวันเสาร์ที่ 29 มกราคม 22:45:46 น. 2565
# สร้างโดย iptables-save v1.8.2 เมื่อวันเสาร์ที่ 29 มกราคม 22:45:46 น. 2565
*แนท
: ยอมรับ [29808561:4940456833]
: ยอมรับอินพุต [2456738:231340403]
: ยอมรับเอาต์พุต [1168080:75403202]
: ยอมรับภายหลัง [2829337:181352732]
[190:11400] -A โพสต์ -s 10.1.2.0/24 -o wlp7s0 -j ​​MASQUERADE
ให้สัญญา
# เสร็จสิ้นเมื่อวันเสาร์ที่ 29 มกราคม 22:45:46 น. 2565
Nikita Kipriyanov avatar
za flag
แปลก. น่าจะเป็นที่ตกหรือเบี่ยงที่ระดับต่ำกว่า 3 ข้างสะพานหรือเปล่าครับ? ต่อท้าย `ip neigh`, `ip link`, `bridge fdb show` คุณแน่ใจหรือว่าไม่มีระบบอื่น (เช่น VM) ที่มีที่อยู่ 10.0.1.200 ลองเรียกใช้ `tcpdump -e` เพื่อดูที่อยู่ MAC และเปรียบเทียบที่อยู่ MAC กับข้อมูลที่ได้รับจากคำสั่งอื่นๆ
ke flag
ENM
ขอบคุณสำหรับความคิดเห็น @NikitaKipriyanov มันนำฉันไปสู่สาเหตุของปัญหา! ฉันได้โพสต์รายละเอียดในคำตอบด้านล่างเพื่อช่วยหากมีคนอื่นเจอเรื่องแบบนี้
Score:0
ธง ke
ENM

ด้วยความขอบคุณ Nikita Kipriyanov ที่ชี้ทางที่ถูกต้องให้ฉัน ฉันได้แก้ปัญหาแล้ว

เมื่อวิ่ง

tcpdump - โฮสต์ 10.0.1.1

ฉันสังเกตเห็นว่าการตอบสนอง ping เข้ามาบนอินเทอร์เฟซที่ไม่มีอยู่ในระบบ:

# tcpdump - โฮสต์ 10.0.1.1
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง enp10s0, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
10:01:49.233889 24:4b:fe:4a:11:96 > 02:29:9a:f3:0a:00, ethertype IPv4 (0x0800), ความยาว 98: 10.0.1.200 > 10.0.1.1: คำขอเสียงสะท้อน ICMP รหัส 5544 ส่วนที่ 1 ความยาว 64
10:01:49.234053 02:29:9a:f3:0a:00 > 00:26:18:e2:68:f9, ethertype IPv4 (0x0800), ความยาว 98: 10.0.1.1 > 10.0.1.200: ICMP echo ตอบกลับ รหัส 5544 ส่วนที่ 1 ความยาว 64

ซึ่งหมายความว่าระบบเห็นแพ็กเก็ตขาเข้าที่มีที่อยู่ IP ที่ถูกต้องภายใต้ tcpdump แต่เพิกเฉยอย่างถูกต้องสำหรับการประมวลผลตามที่อยู่ MAC

ฉันตรวจสอบการกำหนดค่าบนเราเตอร์เกตเวย์ และสังเกตว่ามีรายการ ARP ที่คงที่ซึ่งมีที่อยู่ไม่ถูกต้อง (อาจเป็นการกำหนดค่าเก่า) การเปลี่ยนการตั้งค่าเกตเวย์เป็นที่อยู่ MAC ของ enp10s0 แก้ไขปัญหาได้

Nikita Kipriyanov avatar
za flag
โปรดยอมรับคำตอบของคุณเองหากสามารถแก้ไขปัญหาได้ สิ่งนี้ไม่เพียงช่วยให้ผู้อ่านสามารถระบุจิตวิญญาณได้เท่านั้น แต่ยังป้องกันไม่ให้คำถามลอยไปมาโดยไม่ได้รับคำตอบอีกด้วย

โพสต์คำตอบ

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