Score:0

ฉันจะส่งต่อการรับส่งข้อมูลทั้งหมดที่มาถึงพอร์ตที่กำหนดไปยังพอร์ตอื่นได้อย่างไร

ธง gb

ฉันจะส่งต่อการรับส่งข้อมูลทั้งหมดที่มาถึงพอร์ตที่กำหนดไปยังพอร์ตอื่นได้อย่างไร

กำหนดเค้าโครงและปัญหา

เค้าโครง

นี่คือเค้าโครงของสิ่งที่ฉันพยายามทำ ...

++--------+ +----------------------------+ +---------------- +
| วาน | <---> | 6789 | | |
| ลูกค้า | | เกตเวย์ | | โฮสต์ |
| | | 4567 | <---> | 2345 บริการ |
++--------+ +----------------------------+ +---------------- +

ฉันต้องการส่งต่อการรับส่งข้อมูลทั้งหมดที่มาถึงพอร์ต 6789 ไปยังพอร์ต 4567 อย่างโปร่งใส ไคลเอนต์บน WAN และบริการบนโฮสต์ไม่ควรรู้อะไรเลยเกี่ยวกับเกตเวย์

เกตเวย์คือ Debian 10 พร้อมไฟร์วอลล์

ปัญหา

ฉันไม่สามารถรับทราฟฟิกที่มาถึงพอร์ต 6789 บนเกตเวย์เพื่อส่งต่อไปยังพอร์ต 4567


การตั้งค่าปัจจุบัน

ขั้นตอนที่ 01 - เปิดเผยพอร์ตบนไฟร์วอลล์และยืนยันว่าพอร์ตเปิดอยู่

เปิดพอร์ตบนเกตเวย์

  1. เรียกใช้ ไฟร์วอลล์-cmd สั่งการ: ไฟร์วอลล์ cmd --add-port=6789

  2. ตรวจสอบสถานะไฟร์วอลล์...

root@gateway:~# firewall-cmd --list-all
สาธารณะ (ใช้งานอยู่)
  เป้าหมาย: ค่าเริ่มต้น
  icmp-block-inversion: ไม่
  อินเทอร์เฟซ: etho0
  แหล่งที่มา: 
  บริการ: dhcpv6-client http https ssh
  พอร์ต: 6789/tcp
  โปรโตคอล: 
  สวมหน้ากาก: ใช่
  พอร์ตไปข้างหน้า: 
  พอร์ตต้นทาง: 
  icmp บล็อก: 
  กฎมากมาย:
  1. ยืนยันว่าพอร์ตเปิดอยู่
  • บนเกตเวย์ ให้เริ่มฟัง: nc -vvlp 6789 &
  • ยืนยันฟังขึ้น...
root@gateway:~# netstat -tulnp | เกรป 6789
tcp 0 0 0.0.0.0:6789 0.0.0.0:* ฟัง 2274/nc
  • จากลูกค้า พยายามเข้าถึงเกตเวย์:
client@client123:~$ nc -vvN gateway.example.org 6789
การเชื่อมต่อกับพอร์ต gateway.example.org 6789 [tcp/*] สำเร็จ!

สรุป: พอร์ต 6789 เปิดอยู่บนไฟร์วอลล์

ทำความสะอาดโดยการฆ่า เอ็นซี ประมวลผลทั้งบนไคลเอ็นต์และเกตเวย์

ขั้นตอนที่ 02 - ยืนยันการเชื่อมต่อระหว่างเกตเวย์และบริการบนโฮสต์

root@gateway:~# telnet localhost 4567
ลอง 127.0.0.1...
เชื่อมต่อกับ localhost
อักขระ Escape คือ '^]'
220 backendhost.backendhost MyService (เดเบียน/GNU)

สรุป: อุโมงค์ระหว่างเกตเวย์และบริการบนโฮสต์นั้นหยุดทำงาน

ขั้นตอนที่ 3 - เพิ่มพอร์ตส่งต่อบนเกตเวย์และตรวจสอบสถานะไฟร์วอลล์

root@gateway:~# firewall-cmd --add-forward-port=port=6789:proto=tcp:toport=4567`
root@gateway:~# firewall-cmd --list-all
สาธารณะ (ใช้งานอยู่)
  เป้าหมาย: ค่าเริ่มต้น
  icmp-block-inversion: ไม่
  อินเทอร์เฟซ: etho0
  แหล่งที่มา: 
  บริการ: dhcpv6-client ssh
  พอร์ต: 6789/tcp
  โปรโตคอล: 
  สวมหน้ากาก: ไม่
  ส่งต่อพอร์ต: port=6789:proto=tcp:toport=4567:toaddr=
  พอร์ตต้นทาง: 
  icmp บล็อก: 
  กฎมากมาย: 

สรุป: การส่งต่อพอร์ตอยู่ในไฟร์วอลล์


ณ จุดนี้ ถ้าฉันพยายาม telnet โฮสต์จากลูกค้า ฉันจะได้...

client@client123:~$ telnet gateway.example.org 6789
กำลังพยายาม <IP_of_gateway>...
telnet: ไม่สามารถเชื่อมต่อกับโฮสต์ระยะไกล: การเชื่อมต่อถูกปฏิเสธ

ณ จุดนี้ ฉันต้องการเห็นสิ่งที่ฉันเห็นในขั้นตอนที่ 02 ด้านบน

คำถาม

นี่ผมไม่แน่ใจ...

เมื่อฉันวิ่ง netstat -tulnp บนเกตเวย์ มันไม่แสดงอะไรที่กำลังฟังอยู่บนพอร์ต 6789 ฉันไม่คาดหวังให้เป็นเช่นนั้น เนื่องจากฉันไม่มีบริการใดๆ ที่รันบนพอร์ต 6789

ฉันต้องการบริการบางอย่างเพื่อฟังบนพอร์ต 6789 หรือไม่ ถ้าอย่างนั้นล่ะ? หรือฉันพลาดบางอย่างในการตั้งค่าไฟร์วอลล์? ฉันต้องการพร็อกซีแบบโปร่งใสตามที่กล่าวไว้หรือไม่ ที่นี่?

ฉันจะไม่ยุ่งกับโพสต์นี้ด้วยลิงก์ไปยังเนื้อหาทั้งหมดที่ฉันได้อ่านในช่วง 2-3 สัปดาห์ที่ผ่านมา แต่ถ้ามีโพสต์ที่มีคำตอบ โปรดอย่าลังเลที่จะชี้ให้เห็น

แก้ไข

กำลังตอบกลับถึง @A.B

โฮสต์ทำงานหลังไฟร์วอลล์ เมื่อโฮสต์เริ่มทำงาน โฮสต์จะสร้างอุโมงค์ไปยังเกตเวย์โดยอัตโนมัติโดยใช้พอร์ต SSH ที่ส่งต่อ

นี่คือคำสั่งที่โฮสต์รันเมื่อบู๊ต: ssh -N -R 4567:localhost:2345 [email protected]

อุโมงค์นั้นขึ้นตามที่ได้รับการยืนยันในขั้นตอนที่ 02 และในขณะที่ฉันไม่ได้พูดถึงก่อนหน้านี้ ไคลเอนต์จะทำงานเมื่ออยู่บน LAN เดียวกันกับโฮสต์

สิ่งที่ฉันกำลังดิ้นรนคือการรับปริมาณข้อมูลมาถึงเกตเวย์เพื่อส่งผ่านไปยังโฮสต์ได้สำเร็จ เกตเวย์จะต้อง "โปร่งใส" ใบรับรองความปลอดภัยถือโดยโฮสต์และไคลเอ็นต์ควรคิดว่ากำลังพูดกับโฮสต์โดยตรง

ฉันยังคงพยายามเรียนรู้คำศัพท์ต่างๆ ดังนั้นหากมีวิธีที่ถูกต้องกว่านี้ในการถามคำถามนี้ ฉันก็พร้อมที่จะรู้ว่ามันคืออะไร

Michael Hampton avatar
cz flag
คุณต้องมีบางอย่างฟังบนพอร์ต 4567
user371793 avatar
gb flag
@MichaelHampton - ขอบคุณสำหรับการตอบกลับของคุณ บนโฮสต์มีการส่งต่อพอร์ต SSH ที่ได้รับการกำหนดค่าให้เชื่อมต่อกับเกตเวย์โดยอัตโนมัติ พอร์ตฟอร์เวิร์ดเชื่อมต่ออยู่ และจากที่ฉันเข้าใจและแสดงในขั้นตอนที่ 02 มันกำลังฟังพอร์ต 4567 หรือฉันเข้าใจอะไรผิดเกี่ยวกับสิ่งที่คุณหมายถึงเมื่อคุณพูดว่า "ต้องการบางสิ่งที่กำลังฟังอยู่บนพอร์ต 4567" ขอบคุณอีกครั้ง.
A.B avatar
cl flag
A.B
คำศัพท์ที่ควรใช้ (และคาดหวังโดยผู้ที่อ่านคำถามของคุณ) คือ "ส่งต่อไปยังโฮสต์บนพอร์ต 2345" ไม่ใช่ "ส่งต่อไปยังพอร์ต 4567" บางพอร์ตในแผนผังของคุณปรากฏเป็นปลายทาง ส่วนพอร์ตอื่นๆ เป็นแหล่งที่มา (หรือฉันไม่เข้าใจวิธีอ่านแผนผัง) คุณต้องชี้แจงคำถามของคุณ
Michael Hampton avatar
cz flag
กลับไปสู่พื้นฐานที่นี่ การเปลี่ยนพอร์ตโดยใช้ firewalld คืออะไร คุณสามารถส่งต่อพอร์ต ssh ของคุณเพื่อฟังโดยตรงจากพอร์ตที่คุณต้องการ
Score:0
ธง gb

ขอบคุณสำหรับความคิดเห็นต่างๆ

มีสองสิ่งที่ฉันขาดหายไป ...

  1. พอร์ตเกตเวย์ ใน /etc/ssh/sshd_config จำเป็นต้องเปลี่ยนจากค่าเริ่มต้น ไม่ ถึง ลูกค้าระบุ
  2. เดอะ จุ๊ๆ จำเป็นต้องเปลี่ยนคำสั่งจากการฟังบนลูปแบ็คเป็นการฟังที่อยู่ทั้งหมด คำสั่งที่อัปเดตมีลักษณะดังนี้: ssh -N -R 0.0.0.0:4567:localhost:2345 [email protected] (สังเกตุ. 0.0.0.0: ที่เพิ่มไว้ข้างหน้าพอร์ต 4567)

โพสต์คำตอบ

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