ฉันมีเซิร์ฟเวอร์บนเครือข่ายของฉันซึ่งฉันต้องการเปิดเผยต่อการเชื่อมต่อ SSH ภายนอก ฉันสามารถ ssh ไปยังอุปกรณ์ได้โดยตรงจากเครือข่ายของฉัน (เช่น ssh 192.168.88.162
ทำงานได้ดี)ฉันได้ตั้งค่ากฎ NAT เพื่อให้การเชื่อมต่อกับ 17722 เปลี่ยนเส้นทางเป็น 22 อย่างไรก็ตามสิ่งนี้ล้มเหลว:
ป.ล. C:\Users\Me> ssh -vvv -i .\.ssh\id_rsa -p 17722 [email protected]
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: การอ่านข้อมูลการกำหนดค่า C:\Users\Me/.ssh/config
debug3: ไม่สามารถเปิดไฟล์: C:/ProgramData/ssh/ssh_config error:2
debug2: Solve_canonicalize: ชื่อโฮสต์ 160.119.XXX.XXX คือที่อยู่
ดีบัก 2: ssh_connect_direct
debug1: กำลังเชื่อมต่อกับพอร์ต 160.119.XXX.XXX [160.119.XXX.XXX] 17722
debug3: Finish_connect - ข้อผิดพลาด: async io เสร็จสมบูรณ์โดยมีข้อผิดพลาด: 10060, io:00000222C310DC10
debug1: เชื่อมต่อกับพอร์ต 160.119.XXX.XXX 17722: การเชื่อมต่อหมดเวลา
ssh: เชื่อมต่อกับพอร์ตโฮสต์ 160.119.XXX.XXX 17722: การเชื่อมต่อหมดเวลา
ฉันจะรับ ssh จาก IP ภายนอกได้อย่างไร
tcpdump บนเซิร์ฟเวอร์แสดง:
ฉัน@JanJansen:~ $ grep 64236 tcpdump
22:13:56.097727 IP 192.168.88.177.64236 > 192.168.88.162.ssh: ค่าสถานะ [S], seq 3490646443, ชนะ 64240, ตัวเลือก [mss 1460,nop,wscale 8,nop,nop,sackOK], ความยาว 0
22:13:56.098213 IP 192.168.88.162.ssh > 192.168.88.177.64236: ค่าสถานะ [S.], seq 869880002, ack 3490646444, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK,nop,wscale 6], ความยาว 0
22:13:57.105046 IP 192.168.88.177.64236 > 192.168.88.162.ssh: ค่าสถานะ [S], seq 3490646443, ชนะ 64240, ตัวเลือก [mss 1460,nop,wscale 8,nop,nop,sackOK], ความยาว 0
22:13:57.105398 IP 192.168.88.162.ssh > 192.168.88.177.64236: ค่าสถานะ [S.], seq 869880002, ack 3490646444, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK,nop,wscale 6], ความยาว 0
22:13:58.162258 IP 192.168.88.162.ssh > 192.168.88.177.64236: ค่าสถานะ [S.], seq 869880002, ack 3490646444, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK,nop,wscale 6], ความยาว 0
22:13:59.117541 IP 192.168.88.177.64236 > 192.168.88.162.ssh: ค่าสถานะ [S], seq 3490646443, ชนะ 64240, ตัวเลือก [mss 1460,nop,wscale 8,nop,nop,sackOK], ความยาว 0
22:13:59.117912 IP 192.168.88.162.ssh > 192.168.88.177.64236: ค่าสถานะ [S.], seq 869880002, ack 3490646444, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK,nop,wscale 6], ความยาว 0
22:14:01.122237 IP 192.168.88.162.ssh > 192.168.88.177.64236: ค่าสถานะ [S.], seq 869880002, ack 3490646444, ชนะ 64240, ตัวเลือก [mss 1460,nop,nop,sackOK,nop,wscale 6], ความยาว 0
เมื่อเทียบกับ local ssh ซึ่งมีจำนวนมาก [พ] ธงไม่ [S]ซึ่งเป็นความแตกต่างที่ใหญ่ที่สุดที่ฉันเห็น แต่ฉันไม่รู้ว่าจะทำอย่างไรกับสิ่งนี้
ฉันเห็นว่ากฎ NAT มีผลบังคับใช้สำหรับสิ่งที่คุ้มค่า นี่คือการกำหนดค่าเราเตอร์:
# ต.ค./04/2021 23:17:07 โดย RouterOS 6.47.4
# รหัสซอฟต์แวร์ = VBLW-UG4R
#
# รุ่น = 951Ui-2HnD
# หมายเลขซีเรียล = B8710C65021A
/ สะพานเชื่อมต่อ
เพิ่ม admin-mac=48:8F:5A:79:92:71 auto-mac=no comment=defconf name=bridge
/ อินเตอร์เฟสไร้สาย
ตั้งค่า [ ค้นหาชื่อเริ่มต้น=wlan1 ] mode=ap-bridge ssid=MikroTik wireless-protocol=802.11
/ อินเตอร์เฟส pppoe-ไคลเอนต์
เพิ่ม add-default-route=ใช่ ปิดใช้งาน=ไม่มีอินเทอร์เฟซ=ether5 name=pppoe-out1 use-peer-dns=yes [email protected]
/ รายการอินเตอร์เฟส
เพิ่มความคิดเห็น = defconf ชื่อ = WAN
เพิ่มความคิดเห็น = defconf ชื่อ = LAN
/interface โปรไฟล์ความปลอดภัยไร้สาย
ตั้งค่า [ find default=yes ] supplicant-identity=MikroTik
/ไอพีพูล
เพิ่มชื่อ = ช่วง dhcp = 192.168.88.10-192.168.88.254
/ip dhcp-เซิร์ฟเวอร์
เพิ่มพูลที่อยู่ = ปิดการใช้งาน dhcp = ไม่มีอินเทอร์เฟซ = เวลาเช่าบริดจ์ = 12h ชื่อ = defconf
/ พอร์ตสะพานเชื่อมต่อ
เพิ่มบริดจ์ = ความคิดเห็นของบริดจ์ = defconf interface = ether2
เพิ่มบริดจ์ = ความคิดเห็นของบริดจ์ = defconf interface = ether3
เพิ่มบริดจ์ = ความคิดเห็นของบริดจ์ = defconf interface = ether4
เพิ่มบริดจ์=ความคิดเห็นของบริดจ์=defconf interface=wlan1
/ip การตั้งค่าการค้นพบเพื่อนบ้าน
ตั้งค่า Discover-interface-list=LAN
/ สมาชิกรายการส่วนต่อประสาน
เพิ่มความคิดเห็น = อินเทอร์เฟซ defconf = รายการสะพาน = LAN
เพิ่มความคิดเห็น = defconf interface = ether1 list = WAN
เพิ่ม interface=pppoe-out1 list=WAN
/ที่อยู่ IP
เพิ่ม address=192.168.88.1/24 comment=defconf interface=ether2 network=192.168.88.0
/ไอพีอาร์พี
เพิ่ม address=192.168.88.162 comment=JanJansen interface=bridge mac-address=00:0F:13:39:20:33
เพิ่มที่อยู่ = 192.168.88.177 ความคิดเห็น = ส่วนต่อประสาน Sarevok = บริดจ์ mac-address = 40:8D:5C:58:C0:97
เพิ่ม address=192.168.88.202 interface=bridge mac-address=32:63:2A:49:58:D9
เพิ่ม address=192.168.88.101 interface=bridge mac-address=18:56:80:24:47:12
/ไอพีคลาวด์
ตั้งค่า ddns-enabled=ใช่
/ip dhcp-ไคลเอนต์
เพิ่มความคิดเห็น = defconf interface = ether1
/ip เครือข่ายเซิร์ฟเวอร์ dhcp
เพิ่ม address=192.168.88.0/24 comment=defconf gateway=192.168.88.1
/ip dns
ตั้งค่าอนุญาตรีโมตคำขอ=ใช่
/ip DNS แบบคงที่
เพิ่ม address=192.168.88.1 comment=defconf name=router.lan
/ip ตัวกรองไฟร์วอลล์
เพิ่มการกระทำ = ยอมรับ chain = อินพุต ความคิดเห็น = "defconf: ยอมรับการสร้าง, ที่เกี่ยวข้อง, ไม่ได้ติดตาม"
เพิ่ม action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
เพิ่ม action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
เพิ่ม action=accept chain=input comment="defconf: ยอมรับการวนกลับในเครื่อง (สำหรับ CAPsMAN)" dst-address=127.0.0.1
เพิ่ม action=drop chain=input comment="defconf: drop all ที่ไม่ได้มาจาก LAN" in-interface-list=!LAN
เพิ่มการกระทำ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับในนโยบาย ipsec" ipsec-policy = ใน, ipsec
เพิ่มการกระทำ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับนโยบาย ipsec" ipsec-policy=out, ipsec
เพิ่ม action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
เพิ่มการกระทำ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับการสร้าง, ที่เกี่ยวข้อง, ไม่ได้ติดตาม"
เพิ่ม action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
เพิ่ม action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
เพิ่มการดำเนินการ = ยอมรับเชน = ส่งต่อความคิดเห็น = "นอก SSH" dst-port = 22 บันทึก = ใช่ โปรโตคอล = tcp
/ip ไฟร์วอลล์
เพิ่ม action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface-list=WAN
เพิ่มการดำเนินการ = dst-nat chain = ความคิดเห็น dstnat = JanJansen dst-port = 17722 ในอินเทอร์เฟซ = บันทึกบริดจ์ = ใช่ โปรโตคอล = tcp to-addresses = 192.168.88.162 to-ports = 22
/ รายการที่อยู่ไฟร์วอลล์ ipv6
เพิ่ม address=::/128 comment="defconf: unspecified address" list=bad_ipv6
เพิ่ม address=::1/128 comment="defconf: lo" list=bad_ipv6
เพิ่ม address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
เพิ่ม address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
เพิ่มที่อยู่=::/96 ความคิดเห็น="defconf: ipv4 compat" list=bad_ipv6
เพิ่ม address=100::/64 comment="defconf: ละทิ้งเท่านั้น" list=bad_ipv6
เพิ่ม address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
เพิ่ม address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
เพิ่ม address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
เพิ่ม address=::224.0.0.0/100 comment="defconf: other" list=bad_ipv6
เพิ่ม address=::127.0.0.0/104 comment="defconf: other" list=bad_ipv6
เพิ่ม address=::/104 comment="defconf: other" list=bad_ipv6
เพิ่ม address=::255.0.0.0/104 comment="defconf: other" list=bad_ipv6
/ ตัวกรองไฟร์วอลล์ ipv6
เพิ่มการกระทำ = ยอมรับ chain = อินพุต ความคิดเห็น = "defconf: ยอมรับการสร้าง, ที่เกี่ยวข้อง, ไม่ได้ติดตาม"
เพิ่ม action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
เพิ่ม action=accept chain=input comment="defconf: accept ICMPv6" protocol=icmpv6
เพิ่มการกระทำ = ยอมรับเชน = อินพุตความคิดเห็น = "defconf: ยอมรับ UDP traceroute" พอร์ต = 33434-33534 โปรโตคอล = udp
เพิ่มการกระทำ = ยอมรับห่วงโซ่ = ความคิดเห็นที่ป้อน = "defconf: ยอมรับการมอบหมายคำนำหน้าไคลเอนต์ DHCPv6" dst-port=546 protocol=udp src-address=fe80::/10
เพิ่มการดำเนินการ = ยอมรับ chain = ความคิดเห็นอินพุต = "defconf: ยอมรับ IKE" dst-port = 500,4500 protocol = udp
เพิ่มการกระทำ = ยอมรับห่วงโซ่ = ความคิดเห็นอินพุต = "defconf: ยอมรับ ipsec AH" โปรโตคอล = ipsec-ah
เพิ่มการกระทำ = ยอมรับเชน = อินพุตความคิดเห็น = "defconf: ยอมรับโปรโตคอล ipsec ESP" = ipsec-esp
เพิ่ม action=accept chain=input comment="defconf: ยอมรับทั้งหมดที่ตรงกับนโยบาย ipsec" ipsec-policy=in,ipsec
เพิ่ม action=drop chain=input comment="defconf: drop ทุกอย่างที่ไม่ได้มาจาก LAN" in-interface-list=!LAN
เพิ่มการกระทำ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับการเชื่อมต่อที่จัดตั้งขึ้น, ที่เกี่ยวข้อง, ไม่ได้ติดตาม" = จัดตั้งขึ้น, เกี่ยวข้อง, ไม่ได้ติดตาม
เพิ่ม action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
เพิ่ม action=drop chain=forward comment="defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
เพิ่ม action=drop chain=forward comment="defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
เพิ่ม action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" hop-limit=equal:1 protocol=icmpv6
เพิ่มการดำเนินการ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับ ICMPv6" โปรโตคอล = icmpv6
เพิ่มการดำเนินการ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับ HIP" protocol = 139
เพิ่มการดำเนินการ = ยอมรับ chain = ส่งต่อความคิดเห็น = "defconf: ยอมรับ IKE" dst-port = 500,4500 protocol = udp
เพิ่มการกระทำ = ยอมรับห่วงโซ่ = ส่งต่อความคิดเห็น = "defconf: ยอมรับ ipsec AH" โปรโตคอล = ipsec-ah
เพิ่มการกระทำ = ยอมรับเชน = ส่งต่อความคิดเห็น = "defconf: ยอมรับโปรโตคอล ipsec ESP" = ipsec-esp
เพิ่ม action=accept chain=forward comment="defconf: ยอมรับทั้งหมดที่ตรงกับนโยบาย ipsec" ipsec-policy=in,ipsec
เพิ่ม action=drop chain=forward comment="defconf: วางทุกอย่างที่ไม่ได้มาจาก LAN" in-interface-list=!LAN
/นาฬิการะบบ
ตั้งค่าโซนเวลา = แอฟริกา/โจฮันเนสเบิร์ก
/เครื่องมือ mac-server
ตั้งค่าอนุญาตส่วนต่อประสานรายการ = LAN
/เครื่องมือ mac-เซิร์ฟเวอร์ mac-winbox
ตั้งค่าอนุญาตส่วนต่อประสานรายการ = LAN