Tôi đã muốn có một cách ngoài băng tần (OOB) để quản lý các máy chủ tại nhà của mình từ lâu. Tại sao OOB? Đôi khi băng thông thông thường bị lỗi bạn, chẳng hạn như khi kết nối internet bị ngắt hoặc khi tôi truy cập tường lửa từ xa và sử dụng thiết lập khiến liên kết WAN bị hỏng. Mọi thứ vẫn đang diễn ra, tôi chỉ không thể truy cập từ xa. Sau đó, tôi phải lái xe về nhà để sửa chữa tất cả như một kẻ xấu. Điều này đặc biệt khó khăn nếu tôi ở ngoài thị trấn.
Vào Freedompop. Freedompop giống như Sprint MVNO cung cấp truy cập 4g chỉ data với giá rẻ – trong trường hợp này, hoàn toàn miễn phí nếu bạn duy trì dưới 500 MB dữ liệu một tháng. Tôi có một chiếc điện thoại phiên bản tự do để vợ tôi có thể chơi Ingress trước khi ứng dụng iOS ra mắt. Sau khi ứng dụng iOS Ingress được phát hành, điện thoại phiên bản tự do bắt đầu thu bụi.
Lưu ý rằng tất cả điều này sẽ đơn giản hơn rất nhiều nếu tôi chỉ làm mọi thứ theo cách “thích hợp”, chẳng hạn như mua điểm truy cập công cụ tự do hoặc thanh toán cho gói chia sẻ kết nối .. nhưng điều đó thú vị là gì? Giải pháp của tôi khá phức tạp và ngớ ngẩn – nó sử dụng cả ba loại đường hầm SSH – nhưng nó hoạt động .. và thật thú vị!
- Máy chủ cục bộ, ngoài băng tần: Máy tính xách tay cũ bị hỏng màn hình đang chạy Xubuntu 14.04
- Cáp Ethernet được gắn vào mạng cục bộ của tôi
- Máy chủ SSH từ xa, được băng tần thường xuyên: Bộ định tuyến được hỗ trợ dd-wrt của bố mẹ tôi (bất kỳ máy chủ ssh từ xa nào mà bạn có quyền truy cập đều sẽ làm được.)
- Điện thoại: Đã kích hoạt Sprint Samsung Galaxy S3 trên mạng Freedompop
- Được gắn vào máy chủ ngoài băng tần qua USB
- openssh-server: Cài đặt cái này trên máy chủ ngoài băng tần của bạn để bạn có thể SSH vào đó
- ssh-keygen: được sử dụng để tạo cặp khóa riêng tư / công khai RSA để cho phép đăng nhập SSH không cần mật khẩu
- màn hình: Cho phép các chương trình tiếp tục chạy ngay cả khi SSH bị ngắt kết nối (tùy chọn)
- autossh: Theo dõi trạng thái kết nối ssh của bạn và sẽ liên tục cố gắng kết nối lại nếu kết nối bị mất, tạo đường hầm liên tục một cách hiệu quả.
- tsocks: Cho phép bạn tạo đường hầm cho tất cả lưu lượng truy cập cho một lệnh được chỉ định thông qua proxy SOCKS
- Máy chủ SSH của Android (Tôi sử dụng máy chủ SSH của ứng dụng Icecold.) Đây là máy chủ SSH dành cho thiết bị Android, không cần root.
Chiến lược của tôi sử dụng một hệ thống các đường hầm xuyên qua các ống để đạt được những gì tôi muốn.
Phiêu lưu, chúng ta đến đây.
Tạo khóa riêng tư / công khai
Đầu tiên, vì chúng tôi sẽ tạo một đường hầm liên tục, nên đăng nhập không cần mật khẩu là bắt buộc. Chúng tôi thực hiện việc này bằng cách tạo một cặp khóa riêng tư / công khai RSA. Tạo cặp khóa trên máy chủ của bạn theo các hướng dẫn sau:
cd ~ / .ssh ssh-keygen -t rsa Tạo cặp khóa rsa công khai / riêng tư. Nhập tệp để lưu khóa (/home/nicholas/.ssh/id_rsa): oob Nhập cụm mật khẩu (trống không có cụm mật khẩu): Nhập lại cùng một cụm mật khẩu: Nhận dạng của bạn đã được lưu trong oob. Khóa công khai của bạn đã được lưu trong oob.pub.
Sao chép khóa công khai đã tạo (trong trường hợp của tôi là oob.pub) vào điện thoại của bạn.
Định cấu hình máy chủ SSH của điện thoại
Tạo máy chủ SSH trên điện thoại của bạn. Định cấu hình người dùng bạn đã tạo để sử dụng khóa công khai đã tạo ở trên. Khi đã được định cấu hình, hãy khởi động máy chủ ssh trên điện thoại, cắm điện thoại vào cáp USB và cắm đầu kia vào máy chủ và kích hoạt chia sẻ kết nối USB trong cài đặt Android.
Trên máy chủ OOB, tìm địa chỉ IP của tether bằng cách ra lệnh định tuyến. Tìm cổng trên giao diện usb0.
tuyến đường đích Cổng đích Genmask Cờ Số liệu tham chiếu Sử dụng Iface mặc định 192.168.42.129 0.0.0.0 UG 0 0 0 usb0
Trong trường hợp của tôi, IP cổng là 192.168.42.129.
Định cấu hình máy chủ OOB
Bắt đầu kết nối tự động với cổng usb0, tạo proxy động (vớ) trong quá trình này.
autossh 192.168.42.129 -l nicholas -i ~ / .ssh / oob -p 34097 -D9999
Phân tích đối số:
- -l tên người dùng để đăng nhập với tư cách
- -i keyfile để sử dụng (đăng nhập không cần mật khẩu, tùy chọn nhưng được khuyến nghị)
- -p port sang ssh tới. Điều này sẽ ngẫu nhiên và được thông báo cho bạn bởi máy chủ ssh android trên điện thoại.
- -D cổng cho proxy động (vớ) của bạn để liên kết. Đây có thể là bất cứ thứ gì bạn chọn.
Đường hầm máy chủ OOB điện thoại hiện đã được thiết lập. Đường hầm này sẽ được sử dụng để cung cấp truy cập internet 4G đến máy chủ của bạn.
Tiếp theo, cấu hình tsocks để sử dụng đường hầm mới tạo của chúng tôi. Các tùy chọn chúng tôi muốn sửa đổi là Mạng cục bộ, máy chủ và server_port.
sudo vi /etc/tsocks.conf local = 192.168.0.0/255.255.0.0 server = 127.0.0.1 server_port = 9999
Bây giờ bạn có thể sử dụng Internet 4G nếu bạn cài đặt trước chương trình bạn muốn sử dụng Internet.
Cập nhật 07/01/2015 Tôi phát hiện ra bộ định tuyến ngoại tuyến của mình thay đổi khóa máy chủ SSH mỗi lần khởi động lại. Điều này đã khiến SSH không thành công do không khớp khóa máy chủ. Tắt kiểm tra khóa máy chủ SSH nghiêm ngặt cho mỗi bài đăng này để giải quyết vấn đề này:
vi ~ / .ssh / config Máy chủ * Nghiêm ngặtHostKeyChecking no
Cập nhật 08/04/2015
Tôi đã tìm thấy một cách thậm chí còn tốt hơn cách trên để tránh lỗi thay đổi khóa SSH. Chỉ cần thêm các tùy chọn sau vào lệnh ssh của bạn:
-o precisionHostKeyChecking = no -o UserKnownHostsFile = / dev / null
Điều đó sẽ chăm sóc thay đổi các khóa ssh cho tốt. Cảm ơn trang web này cho thông tin.
Thiết lập đường hầm với máy chủ bên ngoài
Bây giờ chúng ta có internet 4g, chúng ta có thể sử dụng autossh để gọi ra một máy chủ SSH bên ngoài (trong trường hợp của tôi là bộ định tuyến của cha mẹ tôi.) Lần này chúng ta sẽ bắt đầu một đường hầm ngược. Nó sẽ khiến máy chủ từ xa lắng nghe trên một cổng được chỉ định và chuyển toàn bộ lưu lượng truy cập trên cổng đó qua đường hầm SSH tới máy chủ cục bộ của bạn. Lưu ý rằng bạn cũng sẽ phải sao chép khóa công khai của mình đã tạo trước đó vào máy chủ từ xa này.
tsocks autossh
Đường hầm máy chủ từ xa cục bộ hiện đã được thiết lập. Cổng từ xa để lắng nghe (đối số -R) có thể là bất cứ thứ gì bạn chọn. Hãy nhớ bạn đã sử dụng cổng nào cho bước cuối cùng.
Tự động hóa kết nối
Vì các kết nối SSH có tính tương tác nên tôi thấy việc chạy các lệnh này qua màn hình dễ dàng hơn khi tôi phác thảo trong bài đăng này. Để có các đường hầm này tự động hình thành khi khởi động, chúng tôi sẽ phải tạo một tập lệnh khởi động nhanh và bẩn như được nêu chi tiết ở đây và được làm rõ thêm ở đây.
vi /etc/init/tunnel.conf author “Tên của bạn ở đây – tùy chọn” mô tả “Daemon của bạn sẽ làm gì trong thời gian ngắn – tùy chọn” start on started dbus stop on stop dbus # console output # nếu bạn muốn daemon đưa đầu ra của nó sang bảng điều khiển … ick # respawn # nó sẽ hồi sinh nếu màn hình tập lệnh bị lỗi / chết -dm bash -c “autossh 192.168.42.129 -l nicholas -i /home/nicholas/.ssh/oob -p34097 -D9999” ngủ màn hình 5 -dm bash -c “tsocks autossh dana.jeppson.org -l root -p 443 -i /home/nicholas/.ssh/oob -R5448: localhost: 22” end script sudo initctl reload-configuration
Truy cập máy chủ của bạn ngoài băng tần
Bây giờ chúng ta đã thiết lập một đường hầm giữa máy chủ cục bộ và máy chủ từ xa, chúng ta có thể truy cập vào máy chủ cục bộ của mình thông qua máy chủ từ xa. Trên máy chủ từ xa:
ssh localhost -p5448
Lệnh -p của ssh chỉ định cổng nào sẽ kết nối. Vì chúng tôi có một đường hầm ngược lắng nghe trên cổng 5448, máy chủ sẽ lấy kết nối ssh mà bạn đã khởi tạo và gửi nó qua các ống liên kết đến máy chủ OOB của bạn qua kết nối 4G của nó.
Nếu bạn muốn SSH vào máy chủ OOB của mình trực tiếp từ máy tính xách tay thay vì thông qua máy chủ SSH từ xa, bạn sẽ cần tạo thêm đường hầm, lần này là các đường hầm chuyển tiếp cổng cục bộ thông thường. Tại sao bạn có thể muốn nhiều đường hầm hơn? Nếu bạn muốn truy cập những thứ như SSH, VNC hoặc RDP cho các máy chủ trên mạng của mình thông qua đường hầm OOB trực tiếp đến máy tính xách tay của bạn, bạn sẽ cần phải tạo nhiều đường hầm hơn nữa qua các đường ống này.
Đường hầm đầu tiên (để hiển thị cổng SSH của máy chủ OOB với máy tính xách tay của bạn)
ssh
-L chỉ định cổng nào máy tính xách tay của bạn sẽ nghe. Hai phần còn lại chỉ định nơi máy tính xách tay của bạn sẽ gửi lưu lượng truy cập mà nó nhìn thấy trên cổng đó (từ quan điểm của máy chủ SSH từ xa.)
Đường hầm thứ hai (để hiển thị các cổng của máy chủ bạn chọn vào máy tính xách tay của bạn cũng như cung cấp cho bạn quyền truy cập shell vào máy chủ OOB cục bộ của bạn) Bạn có thể thêm nhiều đối số -L tùy thích, một đối số cho mỗi tổ hợp địa chỉ / cổng mà bạn muốn truy cập .
ssh localhost -p2222 -L3333: 192.168.1.10: 3389 … …
Nếu bạn đã làm được điều đó đến nay, xin chúc mừng. Đây là một bài tập trong việc truy cập mạng gia đình của tôi ngay cả khi kết nối internet bị ngắt. Bạn có thể bỏ qua một nửa số đường hầm này nếu bạn thiết lập một máy chủ openvpn trên máy chủ ngoài băng tần của mình, nhưng đó là hướng dẫn cho thời gian khác.
Nếu bạn theo dõi sự điên rồ này, bạn sẽ có những đường hầm sau đây xuyên qua các ống:
- Đường hầm proxy SOCKS từ máy chủ đến điện thoại
- Đường hầm chuyển tiếp cổng từ xa từ máy chủ OOB đến máy chủ từ xa
- Chuyển tiếp cổng cục bộ từ máy chủ từ xa đến máy tính của bạn
- Chuyển tiếp (các) cổng cục bộ từ máy tính của bạn tới bất kỳ thứ gì trong mạng cục bộ của bạn thông qua đường hầm được tạo ở trên
.