ฉันมีหลายโปรแกรมที่โต้ตอบกับส่วนที่เหลือของ API ซึ่งแต่ละโปรแกรมมีอัตราการโทรที่แตกต่างกัน เป้าหมายของฉันคือการเรียกใช้ทั้งหมดบน vps เดียวกันโดยใช้ หัวหน้างาน. แต่ถ้าฉันทำโดยไม่มีกลไกควบคุม API ระยะไกลจะให้ข้อผิดพลาดการละเมิดอัตราจำนวนมากแก่ฉัน ฉันใช้งานอินสแตนซ์ Amazon Linux 2 โดยมีสองอินเทอร์เฟซและ IP แบบยืดหยุ่นสองรายการ
สิ่งที่ฉันพยายามทำคือการกำหนดเส้นทางการโทรจากบางโปรแกรมตลอด eth0 และบางส่วนตลอด eth1. แนวคิดนี้กำลังทำให้ API มองเห็น IP ที่แตกต่างกันสองรายการเข้ามา ดังนั้นขีดจำกัดของอัตราจะไม่ทริกเกอร์
ก่อนที่จะพยายามใดๆ นี่คือการกำหนดค่าสต็อก:
iptables -L
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
แสดงเส้นทาง ip
ค่าเริ่มต้นผ่าน 172.31.32.1 dev eth0
ค่าเริ่มต้นผ่าน 172.31.32.1 dev eth1 metric 10001
169.254.169.254 พัฒนา eth0
172.31.32.0/20 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.31.43.78
172.31.32.0/20 dev eth1 proto kernel ขอบเขตลิงค์ src 172.31.47.106
แสดงกฎ ip
0: จากการค้นหาทั้งหมดในท้องถิ่น
32765: จาก 172.31.47.106 ค้นหา 10001
32766: จากหลักการค้นหาทั้งหมด
32767: จากค่าเริ่มต้นการค้นหาทั้งหมด
ตารางแสดงเส้นทาง ip 10001
ค่าเริ่มต้นผ่าน 172.31.32.1 dev eth1
172.31.32.0/20 dev eth1 proto kernel ขอบเขตลิงค์ src 172.31.47.106
ตารางแสดงเส้นทาง ip ในเครื่อง
ออกอากาศ 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
ท้องถิ่น 127.0.0.0/8 dev จริง ขอบเขตเคอร์เนลโปรโต โฮสต์ src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
ออกอากาศ 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
ออกอากาศ 172.31.32.0 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.31.43.78
ออกอากาศ 172.31.32.0 dev eth1 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.31.47.106
ท้องถิ่น 172.31.43.78 dev eth0 โปรโตเคอร์เนลขอบเขตโฮสต์ src 172.31.43.78
ท้องถิ่น 172.31.47.106 dev eth1 โปรโตเคอร์เนลขอบเขตโฮสต์ src 172.31.47.106
ออกอากาศ 172.31.47.255 dev eth0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.31.43.78
ออกอากาศ 172.31.47.255 dev eth1 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.31.47.106
รายการไอพีแอดเดอร์
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ 0a:17:21:84:33:f8 brd ff:ff:ff:ff:ff:ff
inet 172.31.43.78/20 brd 172.31.47.255 ขอบเขต global dynamic eth0
valid_lft 3423 วินาทีที่ต้องการ_lft 3423 วินาที
ลิงค์ขอบเขต inet6 fe80::817:21ff:fe84:33f8/64
valid_lft ตลอดไป reserved_lft ตลอดไป
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP กลุ่มเริ่มต้น qlen 1,000
ลิงค์/อีเธอร์ 0a:08:10:90:fa:f8 brd ff:ff:ff:ff:ff:ff
inet 172.31.47.106/20 brd 172.31.47.255 ขอบเขต global dynamic eth1
valid_lft 2474 วินาทีที่ต้องการ_lft 2474 วินาที
ลิงค์ขอบเขต inet6 fe80::808:10ff:fe90:faf8/64
valid_lft ตลอดไป reserved_lft ตลอดไป
ฉันได้ลองต่อไปนี้แล้ว แต่ไม่ประสบความสำเร็จ บีมอน ไม่แสดงกิจกรรมบน eth1 เมื่อโปรแกรมเริ่มต้นโดยผู้ใช้ ทดสอบ โทรออก ฉันได้ตั้งค่าไว้ด้วย การทดสอบการเคี้ยว: ...
และ chmod +s ...
นอกจากการเพิ่ม ผู้ใช้ = ทดสอบ
ไปยังไฟล์คอนฟิกของ Supervisor
# adduser --system --no-create-home ทดสอบ
# iptables -A OUTPUT -m เจ้าของ --uid-เจ้าของการทดสอบ -j MARK --set-mark 993
# กฎ ip เพิ่ม fwmark 993 ตาราง 993
# เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 172.31.32.1 dev eth1 ตาราง 993
# เส้นทาง ip เพิ่ม 172.31.32.0/20 dev eth1 ลิงก์ขอบเขตเคอร์เนลโปรโต src 172.31.47.106 ตาราง 993
# เส้นทาง ip ล้างแคช
ฉันพลาดอะไรไป
ขอบคุณล่วงหน้า!