Score:0

iptables เปลี่ยนเส้นทาง NAT

ธง pe

ฉันมีเซิร์ฟเวอร์ที่รับทราฟฟิก syslog อุปกรณ์ของฉันหลายเครื่องสามารถส่งไปยังพอร์ต udp/514 เริ่มต้นเท่านั้น เซิร์ฟเวอร์ syslog ของฉันไม่สามารถทำงานบนพอร์ต <1024 และทำงานบน 5000 ฉันมี nat PREROUTING REDIRECT บนระบบและมันใช้งานได้ดี

ฉันมีคอนโทรลเลอร์ไร้สายของ Aruba สองสามตัวที่ฉันต้องการส่งไปยังพอร์ตอื่น ฉันกำลังพยายามเปลี่ยนเส้นทางแพ็กเก็ตที่มีแหล่งที่มา 10.5.5.0/24 ไปยังพอร์ต 5008 นี่คือการกำหนดค่าที่สมบูรณ์

* แหลกเหลว
: ยอมรับ [53851:21198923]
: ยอมรับอินพุต [53851:21198923]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [1227:8988526]
: ยอมรับภายหลัง [1227:8988526]
ให้สัญญา
# เสร็จสิ้นเมื่อ พฤ. 30 ก.ย. 14:52:43 น. 2564
# สร้างโดย iptables-save v1.8.4 ในวันพฤหัสบดีที่ 30 กันยายน 14:52:43 น. 2564
*แนท
: ยอมรับ [0:0]
:อินพุต ยอมรับ [0:0]
:หลังยอมรับ [0:0]
:เอาต์พุตยอมรับ [0:0]
-A PREROUTING -s 10.5.5.0/24 -p udp -m udp --dport 514 -j REDIRECT --to-ports 5008
-A PREROUTING -p udp -m udp --dport 514 -j REDIRECT --to-ports 5000
ให้สัญญา
# เสร็จสิ้นเมื่อ พฤ. 30 ก.ย. 14:52:43 น. 2564
# สร้างโดย iptables-save v1.8.4 ในวันพฤหัสบดีที่ 30 กันยายน 14:52:43 น. 2564
*กรอง
: ยอมรับอินพุต [53852:21199096]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [1234:8990186]
-อินพุต -s 10.0.0.0/8 -p udp -m udp --dport 514 -j ยอมรับ
ให้สัญญา

การเปลี่ยนเส้นทางไปยัง udp/5000 นั้นใช้งานได้ดี แต่ ทุกอย่าง กำลังถูกเปลี่ยนเส้นทางไปที่ 5000 ทราฟฟิก Aruba จาก 10.5.5.0/24 ไม่สามารถพุชไปที่ udp/5008

ถ้าฉันออกคำสั่ง: iptables -t nat -L -n -v --line-number . เป็นการยืนยันว่าศูนย์ไบต์กำลังกดปุ่มบรรทัดที่ 1 และทุกอย่างกำลังกดปุ่มบรรทัดที่ 2

ฉันคิดว่าลำดับมีความสำคัญและบรรทัดที่เฉพาะเจาะจงมากขึ้นควรนำหน้าบรรทัดทั่วไป (ตามที่แสดงด้านบน) ฉันลองกลับด้านและไม่ได้ผล

Syslog บน UDP เป็นแบบทิศทางเดียวและไม่มีสถานะ ดังนั้นคุณคงคิดว่านี่จะเป็น NAT ที่ง่ายที่สุดในโลก

ใครเคยทำคอนฟิกแบบนี้บ้าง? ทั้งหมดนี้อยู่ในกล่อง และฉันแค่พยายามแยกข้อความ Aruba syslog ขาเข้าออกจากข้อความอื่นๆ ทั้งหมด

ขอบคุณ!

it flag
คุณอาจจำเป็นต้องล้างกฎ conntrack ในเคอร์เนล เพื่อให้กฎเหล่านั้นถูกสร้างขึ้นใหม่จาก iptables ใหม่ที่คุณเพิ่มเข้าไป หากการรับส่งข้อมูล syslog สอดคล้องกัน (เช่นในแพ็กเก็ตที่เข้ามาภายในทุก ๆ 30 วินาทีหรือบางอย่าง ซึ่งเป็น TTL เริ่มต้นสำหรับรายการ conntrack ก่อนที่จะหมดอายุ (ปรับแต่งได้ผ่านการตั้งค่าเคอร์เนล)) รายการ conntrack ที่เก่ากว่าจะยังคงทำงานอยู่ ดังนั้นการรับส่งข้อมูล จะตีพอร์ตเก่าไปเรื่อยๆ ดู https://serverfault.com/questions/367626/delete-specific-conntrack-entries เพื่อดูตัวอย่างวิธีใช้ conntrack
pe flag
ระบบของฉันไม่มี conntrack สิ่งที่ฉันทำคือ ``` service iptables restart``` ที่ล้างเคาน์เตอร์ ตอนนี้ฉันสันนิษฐานว่าจะล้างตารางการเชื่อมต่อด้วย มันยังใช้งานไม่ได้ ไม่มีการเข้าชมรายการโฆษณาแรก เซิร์ฟเวอร์ syslog ยังคงไม่เห็นแพ็กเก็ตที่มาถึงบน udp/5008
fr flag
คุณสามารถตรวจสอบด้วยเครื่องมือจับแพ็กเก็ต (เช่น tcpdump หรือ tshark) ว่าคุณได้รับทราฟฟิกจากเครือข่าย 10.5.5.0/24 ไปยังพอร์ต UDP 514 หรือไม่ ที่อยู่ DESTINATION ถูกต้องหรือไม่ BTW กฎ INPUT มีไว้เพื่ออะไร มันฟุ่มเฟือย
pe flag
@Tomek ฉันใช้ 'tcpdump udp -nnX port 514 and net 10.5.5.0/24' และใช่ ฉันได้รับแพ็กเก็ต syslog มากมาย กฎ INPUT อยู่ที่นั่นเพราะฉันไม่ทราบว่าเงื่อนไขเริ่มต้นในการส่งผ่านทราฟฟิกทั้งหมดคือ เข้าที่และฉันก็พยายามทำทุกอย่างเพื่อให้มันทำงาน โปรดเมตตาและจำไว้ว่าฉันค่อนข้างใหม่สำหรับ iptables ขอบคุณ!
it flag
"ฉันคิดว่าจะล้างตารางการเชื่อมต่อด้วย" - อย่าสันนิษฐานอะไรเลย เครื่องมือเหล่านี้โต้ตอบกับระบบย่อยของเคอร์เนลที่แตกต่างกัน โปรดติดตั้งเครื่องมือ conntrack และเรียกใช้ `conntrack -L` เพื่อดูเซสชัน NAT ที่กำลังถูกติดตาม ใช้ `conntrack -F` เพื่อล้างตารางทั้งหมด หากไม่สามารถทำได้ ให้ส่งระบบเพื่อรีบูต
pe flag
เพราะรักพีท ที่ทำมัน `conntrack -L` ยืนยันปัญหา `conntrack -F` แก้ปัญหาได้ ฉันตั้งข้อสันนิษฐานนั้นเพราะมันช่างโง่เขลาเสียจริงที่ต้องมีขั้นตอนแยกต่างหาก Linux ต้องการทำลายชีวิตผู้คนหรือไม่? :-) ขอขอบคุณสำหรับความช่วยเหลือของคุณ!
Score:0
ธง za

เปลี่ยนเส้นทางพอร์ต 514 เป็น 5000 และทำให้มันทำงานบนเครื่องท้องถิ่น

หากคุณกำลังสร้างกฎ iptables บนเซิร์ฟเวอร์ syslog ให้ใช้คำสั่งด้านล่าง:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 514 -j REDIRECT --to-port 5000

หรือ

iptables -A PREROUTING -t nat -i eth0<อินเทอร์เฟซขาเข้า> -p tcp --dport 514 -j REDIRECT --to-port 5000

เปลี่ยนเส้นทางการเชื่อมต่อขาเข้าไปยังที่อยู่ IP อื่นบนพอร์ตเฉพาะ

หากคุณพยายามส่งต่อพอร์ตไปยัง IP อื่นและเซิร์ฟเวอร์ของคุณ (ฉันเรียกว่าไฟร์วอลล์) ซึ่งรับ UDP/514 อยู่เบื้องหลังไคลเอนต์และเซิร์ฟเวอร์ Syslog เช่นสถานการณ์บน GitHub ของฉันคุณต้องทำ การส่งต่อพอร์ต iptables ด้วยการตั้งค่าต้นไม้:

สถานการณ์ตัวอย่างง่ายๆ:

 | ลูกค้า:10.5.5.0/24 | --> | 10.5.5.1:enp0s8 ไฟร์วอลล์ enp0s3:192.168.2.1 | --> | 192.168.2.2:enp0s3 Syslog |

1- เปิดใช้งานการส่งต่อ IP

sudo sysctl -w net.ipv4.ip_forward=1

2- PREROUTING สำหรับการรับส่งข้อมูลขาเข้าไปยังไฟร์วอลล์

sudo iptables -t nat -A PREROUTING -d 10.5.5.1 -i enp0s8 -p tcp --dport 514 -j DNAT --to-destination 192.168.2.2:5000 

3- POSTROUTING สำหรับการออกจากทราฟฟิกไปยังเซิร์ฟเวอร์ Syslog

sudo iptables -t nat -A POSTROUTING -o enp0s3 -p tcp --dport 514 -d 192.168.2.2 -j SNAT --to-source 192.168.2.1

โพสต์คำตอบ

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