1. 程式人生 > >[隨筆]利用雲虛擬機器和學校VPN實現校外訪問校內站點(反向代理)_0

[隨筆]利用雲虛擬機器和學校VPN實現校外訪問校內站點(反向代理)_0

探究背景簡介:

  大學校內站點一般不對外開放,個人認為原因有二:

  一是站點內容受眾就是大學師生;

  二是站點基本無防禦措施,在公網環境下容易發生意外情況。

  至於為何不對外開放,不是這篇隨筆探討的重點,利用一些技術工具,實現公網下訪問校內站點,才是這篇隨筆要談的。

  為何要在校外去訪問校內資源?這每個人都有自己的答案。

  要通過公網訪問這種內部站點,基本思路有兩個,一個就是找一臺在校園內部能連線到公網的機器做代理;另一個就是利用幾乎所有高校都會提供的VPN通道,通常用學號等作為驗證。

  第一種思路需要有一定的人脈等資源,不然很難找到一臺在校內能24小時不間斷執行的機器,況且針對機器的宕機很難線上修復,利用個人電腦在宿舍搭建也不現實,畢竟許多學校會斷電斷網。反觀第二種思路,只要有一個學號或者教職工號就可以通過VPN使用校內資源,較為便捷,唯一的一點問題是在連線到VPN後,一般情況下只能訪問校內資源,而無法使用其他的公網上的資源,好在這種現象只是vpn客戶端的一種安全策略而已,可以通過修改路由表

等來達到校內資源和公網資源同時使用的目的。

目的:讓普通師生使用者直接訪問到校內資源。

  無論使用3G,4G,還是自家的移動聯通電信寬頻,都能便捷的訪問校內網站,而無需連線到校內網。

大致工作流程:

一、建立雲主機

  毫無疑問,必須選擇國內的雲主機。

  作為一名忠實的軟粉,選擇雲主機必然是優先選擇微軟自家的Azure了,無奈囊中羞澀,只好放棄。但是1元體驗Azure的好事是絕對不能錯過的,於是用1元錢體驗了1500RMB額度的Azure,建了一個D0標準的虛擬機器,貌似是一天80RMB,很是奢侈啊。但是體驗完了,還是要回歸現實的,最終選了阿里雲最便宜的一檔ECS,但針對此次探討的需求,已經足夠。

  虛擬機器的系統大版本是Ubuntu14。

二、配置雲主機

  因為選擇了使用VPN來訪問校內網站,那麼必須安裝一個VPN客戶端到伺服器,學校提供的VPN是基於SSL協議的,經過我幾天的百度,發現只有MotionPro這款軟體最好使,但遺憾的是,在Linux上面,這款軟體只支援GUI的操作方式,並沒有提供在BASH中操作的命令,那必須要為伺服器安裝一個桌面環境了。經過百度發現,XUbuntu-desktop比較輕量級,在伺服器上使用最好不過,於是根據一些教程,完成了伺服器上桌面環境的安裝配置。具體配置可以參考這篇教程 http://www.linuxidc.com/Linux/2015-04/116446.htm

  作為一名軟粉,為什麼不用Winserver呢?因為windows下Nginx的效能不是一般的差,而且還只是一個beta版本;而IIS在反向代理中會出現一些我個人暫時沒找到解決辦法的問題。所以只能Linux了。

況且!!!Satya Nadella 說了“Microsoft Love Linux”,是的,我也愛Linux。

拍攝自Ignite會場

三、安裝MotionPro

  ArrayNetwork還有幾款類似MotionPro的SSL VPN客戶端軟體,但是這些都會監測路由表變化,然後重置路由表。所以暫時選擇MotionPro

  Array Network公司產品下載集合,可以選擇合適的版本進行下載使用

  http://support.arraynetworks.com.cn/troubleshooting/

四、配置定時任務和指令碼,修改路由表

  針對路由表的修改,是這次探討最為關鍵的一步。通過修改路由表,可以實現特定的IP通過VPN去訪問,而其他的IP則通過物理網絡卡去訪問,從而實現學校內網和公網的同時訪問。

  值得注意的是:

  1. 所有的路由表修改工作是在虛擬機器上完成,不正當的修改會導致當前主機失去和虛擬機器的網路連線
  2. 學校的vpn在長時間無訪問的情況下,會自動掉線,所以需要一個心跳包的機制
  3. 我所在學校的vpn,無論如何,24小時後會自動斷開,需要重連

  所有這些導致的結果就是必須用定時任務和指令碼去修改路由表。至於修改的具體內容,我在GitHub有一個專案專門介紹:https://github.com/cjw1115/RouteTableChange

  由於用到了shell指令碼,需要注意的是,再Ubuntu中,原先預設的bash shell被修改成了dash shell,這會導致一些指令碼處理的語法錯誤,

  通過如下方式改回bash:
  

sudo dpkg-reconfigure dash
選擇NO

五、Nginx反向代理

  完成以上四個步驟後,現在伺服器應該可以訪問校內站點諸如:jwgl.xxxx.edu.cn,my.xxxx.edu.cn等類似網站,也可以訪問百度新浪等公網上的站點。接下來就是安裝配置Nginx,架起一座校內和校外的橋。

  一個基本需求是,使用者訪問例如jwgl.proxyxxx.com,返回jwgl.xxxx.edu.cn的內容。

  Nginx負責監聽使用者對jwgl.proxyxxx.com的請求,並將請求轉發到jwgl.xxxx.edu.cn,最後把jwgl.xxxx.edu.cn的響應又轉發給使用者,實現反向代理。

具體如何配置,可以參考如下配置檔案(/etc/nginx/nginx.conf部分)

upstream  jwgl{
         server jwgl.xxxx.edu.cn:80;
}
server{
         listen 80;
         server_name 127.0.0.1;
        
         location /{
                proxy_set_header Host $host;
                proxy_pass http://jwgl;
         }
}

  jwgl.proxyxxx.com這個網址應該被解析到雲虛擬機器的公網IP上面,具體的解析可以到域名提供商處設定。

  以上五個步驟就可以實現這篇隨筆要探討的主題,在公網下訪問不對外開放的校內資源!

  接下來是自問自答環節:

  問:既然校內資源不對外開放,自然有它的道理,那為什麼還要通過這種方式去訪問校內資源呢?

  答:這麼做,只是為了更好的使用校內資源,絕不是為了搞破壞!

相關推薦

[隨筆]利用虛擬機器學校VPN實現校外訪問校內站點反向代理_0

探究背景簡介:   大學校內站點一般不對外開放,個人認為原因有二:   一是站點內容受眾就是大學師生;   二是站點基本無防禦措施,在公網環境下容易發生意外情況。   至於為何不對外開放,不是這篇隨筆探討的重點,利用一些技術工具,實現公網下訪問校內站點,才是這篇隨筆要談的。

VMWare虛擬機器下為Windows Server 2012配置靜態IPNAT方式

利用VMWare Workstation安裝了Windows Server 2012 R2, 對於伺服器來說,使用動態分配的IP會很不方便,最好設定為靜態IP,此例中虛擬機器和主機的網路聯接方式為NAT 若虛擬機器是以NAT方式連入網際網路,則閘道器以及網際網路訪問許

利用Python進行socket網路程式設計,實現樹莓派與Ubuntu16.04之間的簡單的網路聊天

標題 目標: 採用socket程式設計,完成兩個樹莓派之間、或者樹莓派與Ubuntu系統之間的網路文字通訊(或聊天) 分析: 首先我們需要了解socket程式設計的原理以及它是怎麼實現的。 Socket的英文原義是“孔”或“插座”。作為BSD UNIX的程序通訊機制,取後一種意思。

spring boot使用nginxftp伺服器實現圖片上傳下載windows server

本人使用的springboot為1.5.6版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-pa

Android巴整合第三方推送實現APP偽保活小米篇

此文只是講述如何使用雲巴自帶的包實現該功能,核心技術並不是博主寫的。此功能實現首先實現基礎的推送,沒有實現的請看SDK快速入門,實現了的可以直接去官方文件怎麼整合第三方,雲巴文件傳送門,那我為什麼要寫這篇博文,我是不會和你講的,進入正題: 1.新建專案

Vue 2.x 如何利用proxyTable實現跨域請求反向代理

在專案執行的時候嗎,不可缺少就是的設定反向代理的 詳細的文件 http-proxy-middleware 下載的官方的腳手架開啟檔案的build/dev-server.js 搜尋:(這個外掛官方

虛擬機器服務

雲端計算是一種服務模式,這種模式並不是計算機行業所特有,也不是現代所特有,而是一種已經存在很久的服務模式。其思路就是把各種資源整合起來,然後租給有需要的使用者。拿圖書館做比較,大家都很熟悉了,圖書館收集了很多書,如果你想看書,只需要到圖書館根據自己的需求去借就好了,圖書館會根據你借的數量以及時間收費

利用小鳥虛擬機器搭建web服務嘗試

今天公司要加班版本升級,我負責的模組不是本次重點內容,不過也過來看看是否需要微調。早上在小鳥雲上申請了一臺虛擬機器,可以免費試用三個月,2G2核的Ubuntu 14.04 64位,既然沒事索性搭建web服務,之前一直也沒弄過,那就這麼愉快的決定了哈哈。這裡主要記

Android Studio 找不到虛擬機器真機的解決辦法

這個問題困擾了我好久,最終找到了解決辦法 執行AS的小demo的時候點選執行發現找不到虛擬機器和真機,插上USB也找不到手機,但是在AS的右下角發現壇出了個提示 本菜鳥在網上找的時候網上的大佬們都說是ADB埠被佔用等等,但是方法都不管用,查看了埠並沒有被佔用,網上說將將C:\Window

VirtualBox 虛擬機器宿主機之間的網路連線,虛擬機器主機都可以上網

本篇目的:實現了宿主機與虛擬機器,虛擬機器與虛擬機器互通,宿主機可上網,虛擬機器可上網 第一步:VirtualBox安裝centos7      第一步比較簡單,本篇就不多贅述,本篇重點在於對虛擬機器網路進行配置,下圖是安裝好的centos:

基於滴滴虛擬機器的TensorFlow搭建與使用

前言 隨著AI演算法不斷髮展,對應的應用領域也越來越廣泛,比如自動駕駛、語音機器人等技術已經越來越貼近人們的生活。但是AI龐大的演算法體系讓工程師們望而卻步,不知道該如何使用這些演算法來解決工程中的實際問題,所以市面上誕生了很多優秀的開源框架,本文介紹的TensorFlow就是其中一款最

虛擬機器主機相互ping通

virtualbox Ubuntu16.04 如何實現主機和虛擬機器之間相互ping通。 前提: 虛擬機器中安裝的Ubuntu 已經可以使用NAT地址轉換上網。 現在如果想實現主機和虛擬機器之間可以相互ping通,就需要對該虛擬機器再增加一塊 host-only 網絡卡。 首先需要

深入Java虛擬機器:多型性實現機制--動態單分派靜態多分派

分派發生在編譯期和執行期,編譯期的分派為靜態分派,執行期的為動態分派。 編譯期是根據物件宣告的型別來選擇方法,執行期是根據物件實際型別來選擇方法。 術語: 宗量(JVM虛擬機器) , 什麼是宗量, 方法呼叫者和方法引數被稱為宗量.(後面理解分派需要) 靜態型別:

Linux安裝虛擬機器雙系統兩種方法

一、VMware虛擬機器 1.下載並安裝VMware: ①https://my.vmware.com/cn/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/15_0 ②下載Ubuntu映象檔案:http

VMware下CentOS6.5在NAT網路模式下虛擬機器之間互訪,虛擬機器主機互訪

VMware下CentOS6.5在NAT網路模式下虛擬機器之間互訪,虛擬機器和主機互訪 1、在VMware中配置NAT網路模式 1.1 在虛擬機器設定中將網路介面卡設定為NAT模式 1.2 在VMware工具欄點選“編輯”-“虛擬網路編輯器”,在彈出的視窗中選擇“更改設定”

linux虛擬機器主機的檔案拷貝

一 、 vmware tools 右鍵虛擬機器選擇vmware tools ,虛擬機器會掛載一個光碟機 長這樣 右鍵選擇tar.gz複製到home目錄下,否則會因為登陸賬戶不是root提示沒有許可權 cd ~ 回到home目錄下 sudo tar zxvf vmwaretools.tar

VMWare虛擬機器 CentOS伺服器等 jdk, tomcatMySQL安裝

CentOS Unbutu 小紅帽 Oracle 6 Linux(桌面版) 1.安裝VMWare虛擬機器(伺服器) 2.安裝CentOS 2.1 檢視並設定Linux的IP地址 1)ip addr 檢視ip 2)cd /etc/sysconfig/network-script

[附有虛擬機器fedora,Ubuntu安裝連結]基於Oracle VM的Linux使用

基於Oracle VM的Linux使用 一、安裝 二、以fedora 27為例 1.安裝oracel VM後,它的外觀長這樣子,在這裡我已經裝了兩個Linux了。開啟虛擬機器後,點選新建,輸入

Android Studio 找不到虛擬機器真機的解決辦法

這個問題困擾了我好久,最終找到了解決辦法 執行AS的小demo的時候點選執行發現找不到虛擬機器和真機,插上USB也找不到手機,但是在AS的右下角發現壇出了個提示 本菜鳥在網上找的時候網上的大佬們都說是ADB埠被佔用等等,但是方法都不管用,查看了埠並沒有被佔用,網上說將將C

5-安裝虛擬機器NASM彙編器

1. 安裝虛擬機器Bochs    從上一篇中,我們知道計算機的啟動過程是從主引導扇區才真正開始的,而作業系統就是從這開始一步一步把自己執行起來的。其實換個角度想一下,如果我們把編譯好的程式放在主引導扇區,不也能夠讓處理器執行嗎?   正常來說是可以的,而且還是在不依賴作業系統的