ฉันมี issabel Linux (ขึ้นอยู่กับ Centos 7) กับ 3 อีเธอร์เน็ตและฉันต้องการสถานการณ์นี้:
eth0 พร้อม IP 172.16.3.30/16 ----gw(172.16.0.1)----> (ฉันต้องการใช้เป็นเกตเวย์เริ่มต้น)
eth1 พร้อม IP 10.1.5.102/30 -----gw(10.1.5.101)----> (ทำเครื่องหมายการเชื่อมต่อกับ 10.10.10.10:5160 เพื่อส่งผ่าน 10.1.5.101 ด้วย src(10.1.5.102) ของตัวเอง)
eth2 พร้อม IP 10.1.5.106/30 -----gw(10.1.5.105)----> (ทำเครื่องหมายการเชื่อมต่อกับ 10.10.10.10:5161 เพื่อส่งผ่าน 10.1.5.101 ด้วย src(10.1.5.106) ของตัวเอง)
ความสนใจ : มีที่อยู่ปลายทางเดียวกัน! (10.10.10.10 แต่คนละพอร์ต)
ฉันใช้รหัสนี้:
iptables -A OUTPUT -t mangle -p udp -d 10.10.10.10/32 --dport 5160 -j MARK --set-mark 1
iptables -A OUTPUT -t mangle -p udp -d 10.10.10.10/32 --dport 5161 -j MARK --set-mark 2
echo 100 sip102 >> /etc/iproute2/rt_tables
เสียงสะท้อน 101 sip106 >> /etc/iproute2/rt_tables
เส้นทาง ip เพิ่มค่าเริ่มต้น dev eth1 ตาราง sip102
เส้นทาง ip เพิ่ม dev eth2 ตารางเริ่มต้น sip106
กฎ ip เพิ่มจาก fwmark 1 ตาราง sip102 ทั้งหมด
กฎ ip เพิ่มจาก fwmark 2 ตาราง sip106 ทั้งหมด
แต่ไม่สามารถเชื่อมต่อ SIP Trunks ได้ (ฉันถูกเปลี่ยนสองบรรทัดแรกเป็น -A PREROUTING แต่ไม่ได้รับผลกระทบ)
เมื่อฉันพยายามทดสอบเส้นทางของตารางโดยไม่ทำเครื่องหมาย:
กฎ ip เพิ่มใน 10.10.10.10 ตาราง sip102
ฉันเห็นหนึ่งสายสัญญาณ SIP เชื่อมต่ออยู่ (10.1.5.102 > 10.10.10.10:5160 เชื่อมต่อแล้ว)