ssh vào một máy chủ được kết nối với dịch vụ VPN


22

Tôi có một máy chủ riêng ảo, tôi muốn chạy một máy chủ web trong khi máy chủ của tôi được kết nối với dịch vụ VPN

Khi kết nối VPN đến nhà cung cấp của tôi không hoạt động, tôi có thể làm bất cứ điều gì tôi muốn với máy chủ này, ssh, scp, http, v.v.

Khi openvpn đang chạy và được kết nối với dịch vụ VPN của nhà cung cấp, máy chủ không thể truy cập bằng bất kỳ phương tiện nào và tất nhiên vì một lý do chính đáng

Hình ảnh là như thế này:

           My VPS                             ------------
         +----------------+                  /            \
         |                |                 /   Internet  /       101.11.12.13
         |        50.1.2.3|-----------------\   cloud    /----<--- me@myhome
         |                |                  /           \
         |     10.80.70.60|                 /             \
         +----------------+                 \              \
                        :                    \_____________/
                        :                           :
                        :                           :
                        :                           :
                        :                           :
                  +------------------+              :
                  |     10.80.70.61  |              :
                  |               \  |              :
                  |                \ |              :
                  | 175.41.42.43:1197|..............:
                  |   175.41.42.43:yy|   
                  |       .....      |
                  |   175.41.42.43:xx|
                  +------------------+



Legend                  
------ Line No VPN connection present
...... Line VPN connection established

Những điều cần làm rõ:

  • Tất cả các địa chỉ IP và số cổng trên và dưới là hư cấu
  • Các dòng có số cổng xx, yy và bất cứ thứ gì ở giữa là giả định của tôi, không phải là thứ mà tôi biết thực tế.
  • Tôi đã thiết lập một công việc định kỳ chạy mỗi phút ping một VPS khác của tôi, chạy apache2 Trong nhật ký apache2, tôi có thể thấy địa chỉ IP gốc thay đổi từ 50.1.2.3 thành 175.41.42.43, khi VPN hoạt động, vì vậy VPN đang hoạt động tốt

Nhật ký OpenVPN hiển thị những điều sau:

UDPv4 link remote: [AF_INET]175.41.42.43:1197
[ProviderName] Peer Connection Initiated with [AF_INET]175.41.42.43:1197
TUN/TAP device tun0 opened
do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 local 10.80.70.60 peer 10.80.70.61

Tại thời điểm này, tôi muốn để có thể ssh từ myhomeđể My VPStrong hình, trong khi VPN là đặt và sử dụng PuTTY.

Trước đây, tại một trong những nơi làm việc của tôi, tôi đã được đưa ra một chuỗi rất kỳ lạ để ssh vào một máy chủ cực kỳ an toàn có ba @dấu hiệu trong chuỗi. Vì vậy, nó đã nhảy từ hộp này sang hộp khác như tôi tưởng tượng, nhưng vì các hộp nhảy đang chạy một số phiên bản hệ điều hành windows và một ứng dụng độc quyền trên đó, tôi không thể nhìn thấy những gì đang xảy ra dưới lớp bọc. Vì vậy, tôi đã không chú ý nhiều. Bây giờ tôi bắt đầu nhận ra, tôi có thể ở trong tình trạng tương tự hoặc tương tự.

Sử dụng các địa chỉ IP và cổng trong sơ đồ và / hoặc đoạn mã nhật ký, ai đó có thể cho tôi biết làm thế nào tôi có thể đi qua đường hầm này và truy cập máy chủ của mình không?

Câu trả lời:


10

Bạn bị khóa khỏi VPS vì khi dịch vụ VPN hoạt động, các gói ssh của bạn sẽ được định tuyến qua VPN chứ không phải IP công khai 50.2.1.3 của VPS.

Giả sử máy chủ của bạn:

  • IP công cộng là 50.1.2.3 (theo thiết lập ví dụ của bạn)
  • Mạng con IP công cộng là 50.1.2.0/24
  • Cổng mặc định là xxx1
  • eth0 là thiết bị đến cổng

Thực hiện như sau bằng iproute2:

ip rule add table 128 from 50.1.2.3
ip route add table 128 to 50.1.2.0/24 dev eth0
ip route add table 128 default via x.x.x.1

Sau đó chạy cấu hình máy khách OpenVPN của bạn: openvpn --config youropenvpn-configfile.ovpn &

Sau đó, bạn sẽ có thể ssh vào máy chủ của mình trong khi máy chủ của bạn được kết nối với dịch vụ vpn.

Bạn sẽ cần thêm các bộ lọc iptable thích hợp để hạn chế quyền truy cập vào IP công cộng của bạn từ các phiên không phải ssh: 22 phiên.


Điều này làm việc rất đẹp.
Anthony Giorgio

3
Nó làm việc cho tôi là tốt. Tuy nhiên, tôi gặp khó khăn trong việc hiểu chính xác những gì nó làm; bạn có phiền giải thích loại kết nối nào cho phép / không cho phép này không?
Nhà sư mã hóa

Vâng tôi cũng muốn giải thích thêm. "Thực hiện các thao tác sau bằng iproute2" không giải thích rõ ràng iproute2 là gì hoặc trên máy nào để thực hiện hành động này.
Deanresin

Làm cách nào để có được Mạng con IP công cộng của tôi? Tôi đã tìm kiếm trên web một lúc và không thể tìm thấy nó. Chính xác nó là cái gì?
Tony Friz

2

Điều này có thể hơi muộn, nhưng ...

Vấn đề là cổng mặc định bị OpenVPN thay đổi và phá vỡ kết nối SSH hiện tại của bạn trừ khi bạn thiết lập các tuyến thích hợp trước khi bạn khởi động OpenVPN.

Điều gì sau đây làm việc cho tôi. Nó sử dụng iptables và ip (iproute2). Dưới đây, giả định rằng giao diện cổng mặc định trước khi OpenVPN được khởi động là "eth0". Ý tưởng là để đảm bảo rằng khi kết nối với eth0 được thực hiện, ngay cả khi eth0 không còn là giao diện cổng mặc định nữa, các gói phản hồi cho kết nối sẽ quay trở lại eth0.

Bạn có thể sử dụng cùng một số cho dấu kết nối, dấu tường lửa và bảng định tuyến. Tôi đã sử dụng các số riêng biệt để làm cho sự khác biệt giữa chúng rõ ràng hơn.

# set "connection" mark of connection from eth0 when first packet of connection arrives
sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234

# set "firewall" mark for response packets in connection with our connection mark
sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 table 3412

# route packets with our firewall mark using our routing table
sudo ip rule add fwmark 4321 table 3412

===

CẬP NHẬT:

Những điều trên hoạt động tốt với tôi trên Debian Jessie. Nhưng trên một hệ thống Wheezy cũ hơn, tôi vừa thấy rằng tôi cần thêm "thông qua" vào mục nhập bảng định tuyến:

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 via 12.345.67.89 table 3412

Có "12.345.67.89" phải là cổng không phải VPN gốc.


Điều này cũng nên làm việc với ExpressVPN? Họ có trình cài đặt đi kèm với công cụ dòng lệnh "expressvpn" và bạn có thể gọi "kết nối" hoặc "ngắt kết nối. Tôi đã thử những gì bạn đã đăng và nó không hoạt động. Nó có phải là OpenVPN không?
Tony Friz

tôi không thể làm việc này ... lái xe cho tôi. Câu trả lời ở trên của @hcb không hoạt động. Nhưng tôi thực sự tò mò về lý do tại sao câu trả lời của bạn không hiệu quả với tôi! Một cái gì đó bị thiếu, mà tôi cho rằng đang khiến các quy tắc MANGLE không được thực thi
Motsel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.