Score:0

iptables / LXD - Mangle iptable - กำหนดเส้นทางพอร์ตระยะไกลขาออก (ไปยังพอร์ตเซิร์ฟเวอร์ระยะไกล 21) ผ่าน eth0

ธง ru

เพื่อสรุปบริบท มันเป็นคอนเทนเนอร์ lxd ที่เชื่อมต่อเป็นไคลเอนต์ OpenVpn เสมอ

{วรรณ} <-> {192.168.x.x <-> iptables <-> lxd โฮสต์บริดจ์ 10.0.3.1} <-> {lxd คอนเทนเนอร์ 10.0.3.3 | openvpn <-> iptables}

ในภาชนะมี

  • eth0 (ip 10.0.3.3) ซึ่งเป็นอินเทอร์เฟซไคลเอนต์บนสะพาน lxd
  • tun0 ซึ่งเชื่อมต่อเป็นไคลเอนต์กับเซิร์ฟเวอร์ OpenVpn

โฮสต์ lxd (10.0.3.1) ส่งต่อการรับส่งข้อมูล 10.0.3.3 ไปยังเครือข่ายภายนอก iptables ยอมรับการเชื่อมต่อขาออกเสมอ

ทั้งโฮสต์และไคลเอนต์ lxd มี iptables

ฉันได้ทำการกำหนดเส้นทางบน 10.0.3.3 แล้ว แต่สำหรับพอร์ตขาเข้า (เช่นพอร์ต http ขาเข้าไปยัง 10.0.3.3 และการตอบกลับบน eth0 ไม่ใช่ tun0)

ดังนั้นฉันจึงมีตารางเส้นทาง "novpn" พร้อมหมายเลข fwmark

ปัญหาของฉันตอนนี้คือฉันพยายามทำสิ่งที่ตรงกันข้าม คำขอขาออกที่ไปยังพอร์ต 21 บนเซิร์ฟเวอร์ระยะไกลต้องผ่าน eth0 (ตาราง "novpn")

ฉันติดตามหลายโพสต์บน stackoverflow และรวมสิ่งนี้เข้ากับ iptables ของไคลเอนต์ 10.0.3.3 ฉันรู้สึกว่ามันเป็นแค่:

กฎ ip เพิ่มตาราง fwmark 66 novpn
เส้นทาง ip เพิ่มค่าเริ่มต้นผ่านตาราง 10.0.3.1 dev eth0 novpn

iptables -t mangle -A PREROUTING -p tcp --dport 21 -j MARK --set-mark 66
iptables -t mangle -A OUTPUT -p tcp --dport 21 -j MARK --set-mark 66

ใน iptables ของ 10.0.3.1 ฉันมีกฎที่ยอมรับการส่งต่อจากการเชื่อมต่อที่สร้างไว้แล้วและรู้จัก ดังนั้นสะพานควรปฏิบัติตามและฉันไม่คิดว่าจำเป็นต้องมีกฎอื่นใด?

แต่มันใช้งานไม่ได้เมื่อฉันดู tcpdump บนโฮสต์ (10.0.3.1) ฉันเห็นว่าแพ็กเก็ตถูกส่งด้วย openvpn IP ไม่ใช่ 10.0.3.3 ดูเหมือนว่าจะมีปัญหากับการตรวจสอบของแพ็กเก็ตที่ส่ง -> cksum 0x1983 (ไม่ถูกต้อง -> 0xe8ec)

น่าแปลกที่เมื่อฉันทำ tcpdump บนคอนโซลของไคลเอนต์ lxd (10.0.3.3) tcpdump ไม่แสดงอะไรเลยและฉันก็ไม่เข้าใจอะไรเลย

ฉันสงสัยว่า lxd มีความสำคัญกว่า (อาจเป็นอุปกรณ์พร็อกซี ฯลฯ ) มากกว่า iptables (และ tcpdump ??) แต่นั่นดูแปลกมากสำหรับฉัน

ถ้ามันมีประโยชน์ ฉันมีกฎ "ip rule add to xxx.xxx.xxx.xxx table novpn" ดังนั้นการเชื่อมต่อกับ ip นี้จะต้องผ่าน eth0 และในกรณีนี้ คำขอนั้นถูกต้องใน tcpdump

ใครก็ได้ช่วยฉันที

A.B avatar
cl flag
A.B
ล้มเหลวเนื่องจากสแต็กการกำหนดเส้นทางเลือกที่อยู่ IP ต้นทางก่อนที่ iptables จะสามารถกำหนดเครื่องหมายเพื่อเปลี่ยนเส้นทาง: IP ต้นทางจะไม่เปลี่ยนแปลง โดยปกติจะมีวิธีการที่หรูหรากว่านี้: `ip rule add ...ipproto tcp dport 21 ...` แต่เนื่องจากเป็น FTP และใช้ช่องข้อมูล *ไม่ใช่* บนพอร์ต 21 ฉันคาดว่ามันจะล้มเหลวในภายหลังเมื่อถ่ายโอนไฟล์ (หรือเพียงแค่แสดงรายการไดเร็กทอรี) ดังนั้นฉันจะไม่ตอบ ดูคำถาม/คำตอบนี้ใน UL SE ที่ฉันใช้วิธีนี้: https://unix.stackexchange.com/questions/581419/routing-port-traffic-over-specific-interface
n.karlen avatar
ru flag
ขอบคุณ @A.B ที่ตอบคำถามของฉัน เพราะส่วนใหญ่เป็นปัญหาทางเทคนิคที่ฉันสนใจ ไม่จำเป็นต้องเป็นพอร์ต / โปรโตคอลเฉพาะ ฉันไม่รู้เกี่ยวกับกฎ ip ใหม่เหล่านี้ มันสมเหตุสมผลและใช้งานได้จริงมากกว่าการใช้ iptables

โพสต์คำตอบ

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