Score:1

วิธีแปลหมายเลขพอร์ตต้นทาง UDP โดยใช้ Iptables

ธง jp

ฉันมีแอปพลิเคชัน UDP ซึ่งส่งแพ็กเก็ตที่มีหมายเลขพอร์ตต้นทางขาเข้าเท่ากับหมายเลขพอร์ตปลายทางจากทั้งสองด้านของการสื่อสาร เอกสารยังระบุว่าแอปพลิเคชันนี้จะไม่ทำงานในกรณีที่มีการแปลพอร์ตที่อยู่เครือข่าย (NAPT) ฉันได้ตรวจสอบแล้วว่าเป็นกรณีนี้จริง และ NAT ที่รักษาหมายเลขพอร์ตปลายทางและแหล่งที่มาทำงานอย่างถูกต้อง ซึ่งบางครั้งเรียกว่า "NAT โหมดสแตติก" อย่างไรก็ตาม ฉันกำลังพยายามทำให้แอปพลิเคชันนี้ทำงานโดยใช้ NAPT ซึ่งบางครั้งเรียกว่า "โหมดซ่อน NAT" ฉันคิดว่าสิ่งนี้เป็นไปได้โดยใช้ iptables ดังต่อไปนี้ ที่ฝั่งเซิร์ฟเวอร์ Ubuntu ที่ได้รับหมายเลขชิ้นส่วนซอร์ส UDP ที่แก้ไขแล้ว :

hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 1 -p udp --dport 12000 -j SNAT --to-source :12000
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 2 -p udp --dport 12001 -j SNAT --to-source :12001
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 3 -p udp --dport 12002 -j SNAT --to-source :12002
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 4 -p udp --dport 12003 -j SNAT --to-source :12003
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 5 -p udp --dport 12004 -j SNAT --to-source :12004

เมื่อฉันเรียกใช้แอปพลิเคชัน tcpdump แสดงว่าสิ่งนี้ไม่ทำงาน อีกด้วย iptables -L คำสั่งแสดงว่าไม่มีการใช้กฎ:

hercules@pjjs12:~$ sudo iptables -vxnL -t nat --line-numbers
CHAIN ​​PREROUTING (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         

Chain INPUT (นโยบายยอมรับ 0 แพ็กเก็ต, 0 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         

Chain OUTPUT (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         

Chain POSTROUTING (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         
1 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12000 ถึง::12000
2 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12001 ถึง::12001
3 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12002 ถึง::12002
4 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12003 ถึง::12003
5 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12004 ถึง::12004
hercules@pjjs12:~$ sudo iptables -vxnL --line-numbers
เชนอินพุท (นโยบายยอมรับแพ็กเก็ต 542660, 30600115 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         

เชน FORWARD (นโยบายยอมรับแพ็กเก็ต 1838, 100767 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         

Chain OUTPUT (นโยบายยอมรับแพ็กเก็ต 562972, 888057717 ไบต์)
num pkts bytes target prot เลือกใช้ปลายทางต้นทาง         
hercules@pjjs12:~$ 

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

ขอบคุณ,

ปีเตอร์

โพสต์คำตอบ

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