Score:1

กำหนดค่า iptables อย่างเหมาะสมสำหรับการส่งต่อพอร์ตสองชั้น: เซิร์ฟเวอร์ภายนอกเชื่อมต่อกับเซิร์ฟเวอร์ภายในผ่าน VPN

ธง ru

ฉันมีเซิร์ฟเวอร์ minecraft ที่ทำงานบน VPS (Debian 10) แต่ VPS นั้นอ่อนแอเกินไปที่จะจัดการมัน ดังนั้นฉันจึงต้องการใช้เซิร์ฟเวอร์ภายในที่แข็งแรงกว่าเพื่อเรียกใช้ (Ubuntu 22.04) VPS กำลังโฮสต์เซิร์ฟเวอร์ OpenVPN และเซิร์ฟเวอร์ภายในเชื่อมต่อเป็นไคลเอนต์เดียว VPS อยู่ที่ 10.8.0.1 และเซิร์ฟเวอร์ภายในอยู่ที่ 10.8.0.6 (192.168.1.185 บนเครือข่ายท้องถิ่น)

ฉันใช้กฎ iptables เพื่อส่งต่อแพ็กเก็ต tun0 VPN ที่ 10.8.0.6:25565 ไปยัง IP ของเซิร์ฟเวอร์ในเครื่อง วิธีนี้ใช้ได้ดี: ฉันสามารถสอบถามเซิร์ฟเวอร์ minecraft จาก VPS จากนั้นฉันก็ตั้งกฎชุดเดียวกัน (แน่นอนว่า IP ที่เกี่ยวข้องถูกสลับ) บน VPS เพื่อส่งต่อการเชื่อมต่อจาก vps_external_ip:25565 ไปยัง 10.8.0.6:25565 กฎนี้กำลังส่งต่อแพ็คเก็ตไปยังเซิร์ฟเวอร์ภายในเครื่อง แต่การเชื่อมต่อจะหมดเวลาเสมอ สิ่งที่แปลกคือไม่มีการเชื่อมต่อที่ใช้งานได้จาก VPS -> เซิร์ฟเวอร์ภายในหรือภายนอก -> VPS -> เซิร์ฟเวอร์ภายในที่เพิ่มตัวนับแพ็กเก็ตของกฎ POSTROUTING MASQUERADE ใดๆ แต่ทำเพื่อกฎ PREROUTING มีการเชื่อมต่อ TCP/UDP หมดเวลาเมื่อกด VPS บน eth0:25565 ไม่มีข้อผิดพลาดปฏิเสธการเชื่อมต่อ

เปิดใช้งานการส่งต่อ IPV4 ทั้งสองเครื่องและฉันได้ลองใช้โดยปิดใช้งาน UFW แล้วไม่มีโชค

ฉันตั้งค่ากฎการบันทึกบน NAT POSTROUTE ของเซิร์ฟเวอร์ทั้งสอง แต่ฉันไม่แน่ใจว่าจะแก้ไขปัญหานี้ได้อย่างไรเนื่องจากไม่พบเลย

เอาต์พุตบันทึก POSTROUTE (iptables -t nat -I POSTROUTING -j LOG --log-prefix "NAT:" --log-level 7)

##### วีพีเอส
23 เม.ย. 20:52:02 น. vpskernel: [1552376.122382] NAT1:IN= OUT=tun0 SRC=<my ip> DST=10.8.0.6 LEN=48 TOS=0x08 PREC=0x20 TTL=114 ID=21284 DF PROTO=TCP SPT =1806 DPT=25565 WINDOW=64240 RES=0x00 SYN URGP=0

#### เซิร์ฟเวอร์ท้องถิ่น
<ไม่พบบันทึกที่เกี่ยวข้อง grepping /var/log/kern.log สำหรับ NAT1 และไม่มีบันทึกสำหรับ tun0 เลย>

ฉันใช้ /etc/ufw/before.rules สำหรับแต่ละเซิร์ฟเวอร์เพื่อตั้งค่ากฎ iptables
VPS /etc/ufw/before.rules:

# เริ่มกฎ OPENVPN
# กฎตาราง NAT
*แนท
: ยอมรับ [0:0]
:หลังยอมรับ [0:0]
# อนุญาตการรับส่งข้อมูลจากไคลเอนต์ OpenVPN ไปยัง eth0
-A โพสต์ -s 10.8.0.0/8 -o eth0 -j MASQUERADE
# สิ้นสุดกฎของ OpenVPN

-A PREROUTING -i eth0 -d <vps external IP> -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
-A PREROUTING -i eth0 -d <vps external IP> -p udp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
-A โพสต์ -s 10.0.0.0/8 ! -d 10.0.0.0/8 -j สวมหน้ากาก
ให้สัญญา

โลคัลเซิร์ฟเวอร์ /etc/ufw/before.rules:

*แนท
: ยอมรับ [0:0]
:หลังยอมรับ [0:0]
-A PREROUTING -i tun0 -d 10.8.0.6 -p tcp --dport 25565 -j DNAT --to-destination 192.168.1.185:25565
-A PREROUTING -i tun0 -d 10.8.0.6 -p udp --dport 25565 -j DNAT --to-destination 192.168.1.185:25565
#กำหนดเส้นทาง
-A Postrouting -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j สวมหน้ากาก
ให้สัญญา

กฎของ PREROUTING กำลังทำงาน แต่ตัวนับกฎของ POSTROUTING จะไม่เพิ่มขึ้น

ฉันรัน tcpdump บน 25565 เพื่อดีบัก ฉันเห็นแพ็กเก็ตเข้ามา แต่ฉันไม่เห็นการส่งคืนอินเทอร์เฟซใดๆ เมื่อเชื่อมต่อภายนอก เมื่อทำการสอบถามโดยตรงจาก VPS ฉันเห็นเซิร์ฟเวอร์ภายในตอบกลับใน tun0 ดูเหมือนว่าปัญหาคือเซิร์ฟเวอร์ภายในเครื่องพยายามตอบกลับโดยตรงไปยัง IP ของฉันบน en01 แทนที่จะเป็น VPS บน tun0 แต่ฉันไม่แน่ใจว่าจะแก้ไขอย่างไร

VPS tcpdump:

# จริยธรรม 0
21:43:39.972647 IP my_ip.2729 > vps_ip.25565: ค่าสถานะ [S], seq 1483515507, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK], ความยาว 0
#tun0
21:43:39.972739 IP my_ip.2729 > 10.8.0.6.25565: ค่าสถานะ [S], seq 1483515507, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK], ความยาว 0

เซิร์ฟเวอร์ท้องถิ่น tcpdump:

#ทูน0
21:43:39.972566 IP my_ip.2729 > 10.8.0.6.25565: ค่าสถานะ [S], seq 1483515507, ชนะ 64240, ตัวเลือก [mss 1356,nop,nop,sackOK], ความยาว 0

#en01
21:43:39.972618 IP 10.8.0.6.25565 > my_ip.2729: ค่าสถานะ [S.], seq 2141764446, ack 1483515508, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK], ความยาว 0

Score:0
ธง ru

ในที่สุดก็คิดออก คู่มือการส่งต่อพอร์ตออนไลน์ส่วนใหญ่มีกฎ POSTROUTING ที่ใช้ไม่ได้กับ OpenVPN (หรือสำหรับสถานการณ์ของฉัน) แทนที่จะอนุญาตให้ IP ในเครื่องเป็นต้นทางโดยมีปลายทางที่ไม่ใช่ IP ในเครื่อง ฉันต้องสร้างกฎการโพสต์เราต์สำหรับสิ่งใดนอกจาก IP ในเครื่องเพื่อให้เขียนใหม่เป็น tun0 VPS IP

VPS /etc/ufw/before.rules (สลับ s และ d):
-A โพสต์ -d 10.0.0.0/8 ! -s 10.0.0.0/8 -j MASQUERADE -t แนท

นอกจากนี้ กฎ POSTROUTING ยังจำเป็นบน VPS เท่านั้น

โพสต์คำตอบ

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