ความแตกต่างระหว่าง“ การส่งต่อโลคัลพอร์ต” และ“ การส่งต่อพอร์ตแบบไดนามิก” หรือไม่?


14

ฉันพยายามที่จะเข้าใจความแตกต่างระหว่าง "การส่งต่อพอร์ตท้องถิ่น" และ "การส่งต่อพอร์ตแบบไดนามิก"

ในคำสั่ง ssh สำหรับ "local port forwarding" จำเป็นต้องระบุโฮสต์ปลายทางเสมอหรือไม่

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


คำตอบ:


15

ใช่คุณต้องระบุ IP ปลายทางและพอร์ตเมื่อใช้การส่งต่อโลคัล จากman ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.

ชัดเจนเพียงผูกที่อยู่เป็นตัวเลือก

ไม่คุณไม่สามารถระบุโฮสต์ปลายทางหรือพอร์ตเมื่อใช้การส่งต่อแบบไดนามิก ในการส่งต่อแบบไดนามิก SSH ทำหน้าที่เป็นพร็อกซี SOCKS อีกครั้งจาก manpage (เน้นเหมือง):


 -D [bind_address:]port
         Specifies a local “dynamic” application-level port forwarding.
         This works by allocating a socket to listen to port on the local
         side, optionally bound to the specified bind_address.  Whenever a
         connection is made to this port, the connection is forwarded over
         the secure channel, and the application protocol is then used to
         determine where to connect to from the remote machine.  Currently
         the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
         as a SOCKS server.

ด้วย-LSSH ไม่พยายามทำความเข้าใจกับการรับส่งข้อมูล มันจะส่งทุกอย่างที่ได้รับบนพอร์ตในเครื่องไปยังพอร์ตเป้าหมาย - คุณกำหนดพอร์ตเป้าหมายในเวลาที่ทำการเชื่อมต่อ ด้วย-DSSH ทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์และสามารถจัดการการเชื่อมต่อจากหลายพอร์ต (ตัวอย่างเช่นเบราว์เซอร์ที่กำหนดค่าให้ใช้เป็นพร็อกซี SOCKS จากนั้นสามารถเข้าถึง HTTP, HTTPS, FTP และอื่น ๆ ผ่านการเชื่อมต่อเดียวกัน) และเช่นเดียวกับพร็อกซีเซิร์ฟเวอร์อื่น ๆ ก็จะใช้ทราฟฟิกเพื่อกำหนดปลายทาง


1
ขอบคุณ muru! ฉันสงสัยว่าเหตุใดการส่งต่อไดนามิกเรียกว่าพร็อกซีในขณะที่การส่งต่อโลคัลไม่ใช่ ตามคำนิยามเซิร์ฟเวอร์ ssh, ไคลเอ็นต์ ssh หรือทั้งสองอย่างในการส่งต่อภายในพร็อกซี (เซิร์ฟเวอร์) คืออะไร? unix.stackexchange.com/a/234184/674
ทิม

1
@Tim พร็อกซีเซิร์ฟเวอร์เข้าใจว่าโปรโตคอลใดที่ใช้พร็อกซี ด้วยการส่งต่อพอร์ต SSH ทำให้ความพยายามที่จะเข้าใจในสิ่งที่โปรโตคอลจะมาทางของมันไม่มี แต่-Dก็มีไปเพื่อให้เข้าใจในการที่จะส่งข้อมูลไป
muru

ขอบคุณ ฉันค้นหาในหนังสือบางเล่มของเครือข่ายคอมพิวเตอร์ (เช่น Tanenbaum) เพื่อหาคำจำกัดความของพร็อกซี (เซิร์ฟเวอร์) ที่ชัดเจนเหมือนของคุณ แต่ไม่พอใจ คุณมีหนังสือบางเล่มที่จะแนะนำสำหรับแนวคิดการเรียนรู้หรือไม่?
ทิม

ในการส่งต่อพอร์ตไดนามิกซึ่งเป็นพร็อกซีเซิร์ฟเวอร์ไคลเอนต์ ssh เซิร์ฟเวอร์ ssh หรือทั้งสองอย่าง?
ทิม

@Tim Tanenbaum เป็นหนังสือเล่มเดียวที่ฉันศึกษามา ส่วนที่เหลือมาจากการใช้สิ่งต่าง ๆ
muru

0

อีกวิธีหนึ่งในการเรียนรู้แนวคิดนี้คือการดูว่าลูกค้าเชื่อมต่อกับคลัสเตอร์ลดแผนที่แบบยืดหยุ่น (EMR) ของ amazon ได้อย่างไร EMR มีแอพพลิเคชั่นท้องถิ่นมากมายที่เปิดตัวและเข้าถึงได้ผ่านช่องทาง SSH

มี 2 ​​ตัวเลือกสำหรับไคลเอนต์: A) โลคัลพอร์ตไปข้างหน้าคำสั่ง SSH: ssh -i key.pem -L 8157: abcd: 8088 hadoop @ abcd

ที่นี่ลูกค้าบอกว่าตัวอย่างเช่น 8157 บน localhost ได้รับการส่งต่อไปยัง abcd: 8088 ลูกค้าต้องทำการร้องขอไปยัง localhost: http: // localhost: 8157 แอปพลิเคชันอื่น ๆ อาจฟังพอร์ตเช่น 8089,8090 และ ลูกค้าจะต้องทำการเชื่อมต่อ ssh สำหรับแต่ละคนเหล่านี้

B) พอร์ตไดนามิกไปข้างหน้านี่คือคำสั่ง SSH เดียวที่ใช้: ssh -i key.pem -D 8157 hadoop @ abcd

การรับส่งข้อมูลใด ๆ ที่เข้าสู่พอร์ต 8157 จะถูกส่งผ่านอุโมงค์ ssh ปลายทางของการรับส่งข้อมูลจะเป็นปลายทางของ URL ตัวอย่างเช่นคุณสามารถใช้ proxy-client บนเว็บเซิร์ฟเวอร์ของคุณและเปลี่ยนเส้นทาง http URI บางส่วนเพื่อใช้พร็อกซี คุณสามารถเข้าถึงแอปพลิเคชันทั้งหมดของคุณบน 8089,8090 ผ่านคำสั่งเดียว

สำหรับการอ้างอิงดูเอกสารนี้: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.