การส่งต่อพอร์ตผ่าน VPN


0

ฉันมีการตั้งค่าต่อไปนี้:

  1. เราเตอร์ที่มีการเข้าถึงอินเทอร์เน็ต
    • ที่อยู่ IP สาธารณะแบบคงที่
    • ฟังก์ชั่นต่ำ
    • มีคุณสมบัติ "การส่งต่อพอร์ต"
    • ที่อยู่ IP ท้องถิ่น: 192.168.1.1
  2. เซิร์ฟเวอร์ Linux (Ubuntu) เชื่อมต่อกับบริการ VPN (ควบคุมโดยฉันไม่ได้) เป็นเกตเวย์สำหรับลูกค้า (3)
    • อินเตอร์เฟส enp0s3: gw: 192.168.1.1; ที่อยู่ IP: 192.168.1.10
    • อินเตอร์เฟส tun0 - การเชื่อมต่อ VPN
  3. ไคลเอนต์ Windows 7
    • อินเตอร์เฟสเครือข่าย: gw: 192.168.1.10; ที่อยู่ IP: 192.168.1.8

กฎ iptables บนเซิร์ฟเวอร์ (2):

*nat
:PREROUTING ACCEP T [443:55918]  
:INPUT ACCEPT [21:3328]
:OUTPUT ACCEPT [22:1600]
:POSTROUTING ACCEPT [73:4883]
-A POSTROUTING -s 192.168.1.8/32 -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [2135:1080592]
:FORWARD ACCEPT [846:190487]
:OUTPUT ACCEPT [1592:396526]
-A FORWARD -s 192.168.1.8/32 -i tun0 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.1.8/32 -i enp0s3 -o tun0 -j ACCEPT
COMMIT

ฉันจะส่งต่อพอร์ตสำหรับการเชื่อมต่อ SSH ไปยังไคลเอนต์ผ่านที่อยู่ของเราเตอร์ภายนอกได้อย่างไร (ฉันไม่สามารถทำได้ผ่าน VPN)

คำตอบ:


0

สิ่งนี้สามารถทำได้อย่างง่ายดายด้วยการเชื่อมต่อสำรอง SSH

การเตรียมการบนเซิร์ฟเวอร์:

ฉันสมมติว่าคุณได้cronติดตั้งและใช้งานแล้ว สร้างไฟล์ใหม่/etc/cron.hourlyด้วยเนื้อหาดังต่อไปนี้: (อย่าลืมchmod +xไฟล์!)

#!/bin/bash
cstate=$(netstat -na | grep "tcp" | grep "<IP-of-home-machine>:22" | tr -s " " | cut -d " " -f 6 | head -n 1)
cdate=$(date "+%Y-%m-%d %H:%M:%S")
if [[ $cstate == "ESTABLISHED" ]] || [[ $cstate == "TIME_WAIT" ]]
then
    echo "[$cdate] SSH connection up. ($cstate)" >> /var/log/check-ssh-relay.log
else
    echo "[$cdate] SSH connection broken. ($cstate) Reconnecting..." >> /var/log/check-ssh-relay.log
    ssh -N -f -R 12122:localhost:22 <username>@<IP-of-home-machine>
fi

การดำเนินการนี้จะตรวจสอบเป็นรายชั่วโมงหากการเชื่อมต่อสิ้นสุดและพยายามเชื่อมต่อใหม่หากไม่ได้เชื่อมต่อ มีประโยชน์เมื่อพีซีของคุณที่บ้านไม่ได้เปิดอยู่เสมอ /var/log/check-ssh-relay.logมันเขียนข้อมูลเข้าสู่ระบบเพื่อ การตรวจสอบความถูกต้องจะทำผ่าน SSH- ปุ่มเพื่อให้แน่ใจว่าคุณได้รับการตั้งค่าอย่างถูกต้องล่วงหน้า

บนคอมพิวเตอร์ของคุณที่บ้าน:

สมมติว่าคุณมีการตั้งค่า openssh-server อย่างถูกต้องสิ่งที่คุณต้องทำตอนนี้คือ:

$ ssh <server-username>@localhost -p 12122

เพื่อสร้างการเชื่อมต่อ SSH SCP, SFTP และ บริษัท แน่นอนเกินไป

หากเหตุผลด้านความปลอดภัยที่คุณต้องการเปลี่ยนพอร์ต SSH เริ่มต้นบนเครื่องที่บ้านของคุณเพียงแค่แทนที่:22ในสคริปต์ฝั่งเซิร์ฟเวอร์ข้างต้นด้วยพอร์ตที่กำหนดเองที่คุณเลือก

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