使用lanproxy進行內網穿透

內網穿透

《微信本地調試》一文中,小編提到了使用ngrok、natapp和花生殼進行內網穿透。可是,想要使用自定義域名,都是要收費的。php

本文中,咱們要搭建一個免費的內網穿透服務器。內網穿透服務器,可選的軟件有lanproxy、frp、n2n等等,今天咱們選擇的是lanproxy。html

原文地址:http://www.voidking.com/2017/...java

準備

一、一臺公網服務器(運行proxy-server)。
二、一臺內網pc或服務器(運行proxy-client)。node

服務端配置

安裝java

一、刪除自帶jdknginx

rpm -e --nodeps `rpm -qa | grep java`

二、查看yum庫中有哪些jdk版本。
yum search java | grep jdkgit

三、選擇java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment版本進行安裝。
yum install java-1.8.0-openjdk-devel.x86_64github

默認安裝目錄爲/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64web

四、配置環境變量
vim /etc/profileapache

在最後添加:vim

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

五、讓修改當即生效
source /etc/profile

六、查看安裝結果
javajavacjava -version

安裝lanproxy

一、訪問lanproxy下載地址,下載proxy-server-0.1.zip,上傳到公網服務器。

或者,直接在服務器上下載
wget https://github.com/ffay/lanproxy/files/1274739/proxy-server-0.1.zip

curl -C - -O -L https://github.com/ffay/lanproxy/files/1274739/proxy-server-0.1.zip

二、解壓安裝
unzip proxy-server-0.1.zip

mv proxy-server-0.1 /usr/local/

三、修改配置文件
vim /usr/local/proxy-server-0.1/conf/config.properties
修改管理員的用戶名和密碼。

四、啓動服務
cd /usr/local/proxy-server-0.1/bin

chmod +x startup.sh

./startup.sh

五、訪問 http://host_ip:8090 ,便可看到登陸界面。

nginx反向代理

一、添加域名解析local到公網ip。

二、在nginx虛擬主機配置目錄中,添加local.voidking.com.conf,內容以下:

server {
    listen 80;
    server_name local.voidking.com;
    charset utf-8;
    location /{
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size       1024m;
        client_body_buffer_size    128k;
        client_body_temp_path      data/client_body_temp;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
        proxy_temp_path            data/proxy_temp;
        
        proxy_pass http://127.0.0.1:8090;
    }
}

三、測試nginx
./nginx -t,也許會提示缺乏目錄,那麼新建目錄。
mkdir -p /usr/local/nginx/data/client_body_temp

mkdir -p /usr/local/nginx/data/proxy_temp

四、重啓nginx
./nginx -s reload

五、訪問 http://local.voidking.com/ ,便可看到登陸界面。

使用

服務端配置

一、登陸lanproxy,添加客戶端,輸入客戶端備註名稱,生成隨機密鑰,提交添加。

二、客戶端列表中,配置管理中,都會出現新添加的客戶端。

三、單擊配置管理中的客戶端,添加配置(每一個客戶端能夠添加多個配置)。

  • 代理名稱,推薦輸入客戶端要代理出去的端口,或者是客戶端想要發佈到公網的項目名稱。
  • 公網端口,填入一個服務器空閒端口,用來轉發請求給客戶端。
  • 代理IP端口,填入客戶端端口,公網會轉發請求給該客戶端端口。

客戶端配置

一、訪問lanproxy下載地址,下載proxy-client-0.1.zip,解壓到喜歡的目錄。

二、進入proxy-client-0.1/conf目錄,修改config.properties爲:

#與在proxy-server配置後臺建立客戶端時填寫的祕鑰保持一致;沒有服務器能夠登陸 https://lanproxy.org/ 建立客戶端獲取祕鑰
client.key=7533f855416741d88732954991668715
ssl.enable=true
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

#這裏填寫實際的proxy-server地址;沒有服務器默認便可,本身有服務器的更換爲本身的proxy-server(IP)地址
server.host=local.voidking.com

#proxy-server ssl默認端口4993,默認普通端口4900
#ssl.enable=true時這裏填寫ssl端口,ssl.enable=false時這裏填寫普通端口
server.port=4993

三、進入proxy-client-0.1/bin目錄,雙擊startup.bat,便可啓動lanproxy客戶端。

若是啓動失敗,通常是由於jdk沒有安裝配置成功,參考《IDEA的經常使用配置》中的安裝jdk,安裝配置jdk後再次啓動便可。

四、訪問地址 http://local.voidking.com:50000/ ,便可看到本地訪問客戶端80端口相同的頁面。

至此,代理成功!

進階配置

一個端口一個項目

假設,咱們本地的4000端口開啓了node服務。那麼,怎麼把這個服務優雅地提供給整個互聯網?

一、服務端添加配置

二、啓動本地node服務

三、已經啓動lanproxy客戶端,訪問 http://local.voidking.com:50001/

此時,整個互聯網都能訪問到這個node項目,可是,帶着端口號很不友好。那麼,咱們就給這個項目添加一個單獨的域名。

一、添加域名解析node.local到公網ip。

二、在nginx虛擬主機配置目錄中,添加node.local.voidking.com.conf,內容以下:

server {
    listen 80;
    server_name node.local.voidking.com;
    charset utf-8;
    location /{
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size       1024m;
        client_body_buffer_size    128k;
        client_body_temp_path      data/client_body_temp;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
        proxy_temp_path            data/proxy_temp;
        
        proxy_pass http://127.0.0.1:50001;
    }
}

三、重啓nginx
./nginx -s reload

四、訪問地址 http://node.local.voidking.com/ ,便可看到本地node服務。

一個端口多個項目

一、經過咱們開放出的80端口,能夠訪問web根目錄下的不少項目,好比在其餘文章中提到過的basic項目和vkphp項目,下文以vkphp項目爲例。

二、當前,vkphp項目首頁是簡單的文字顯示。

三、經過外網訪問的地址爲 http://local.voidking.com:500...

此時,整個互聯網都能訪問到這個vkphp項目,可是,帶着端口號和項目名,感受像是個欺詐網站。那麼,咱們可否給這個項目添加一個單獨的域名呢?固然也是能夠的。

一、添加域名解析vkphp.local到公網ip。

二、在nginx虛擬主機配置目錄中,添加vkphp.local.voidking.com.conf,內容以下:

server {
    listen 80;
    server_name vkphp.local.voidking.com;
    charset utf-8;
    location /{
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size       1024m;
        client_body_buffer_size    128k;
        client_body_temp_path      data/client_body_temp;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
        proxy_temp_path            data/proxy_temp;
        
        proxy_pass http://127.0.0.1:50000;
    }
}

三、重啓nginx
./nginx -s reload

四、打開本地apache的http-vhosts.conf,添加配置:

<VirtualHost *:80> #laragon magic!
    DocumentRoot "C:/laragon/www/vkphp/"
    ServerName vkphp.local.voidking.com
    ServerAlias vkphp.local.voidking.com
</VirtualHost>

五、重啓本地apache

六、訪問地址 http://vkphp.local.voidking.com/ ,便可看到本地vkphp項目。

有趣的是,訪問時該地址會自動在後面加上vkphp,成爲 http://vkphp.local.voidking.c...

結語

由上配置咱們發現,nginx的反向代理很是好用。稍微調整,即可以適應大多數項目,實在是美化url的神器,哇咔咔。

書籤

lanproxy源碼地址

業餘草推薦一款局域網(內網)穿透工具lanproxy

frp源碼地址

frp中文文檔

使用frp實現內網穿透

n2n源碼地址

n2n內網穿透神器(一條命令實現穿透)

n2n內網穿透神器

相關文章
相關標籤/搜索