在外网访问校园内网的两种办法

有时候需要在外网访问一下内网的站点,比如论坛什么的。

一、Dog-tunnel

下载(不要下载 Lite 版):http://dog-tunnel.tk/
本地电脑(需要校内网络认证)执行:

dtunnel -reg xxx -local 192.168.1.10:4321 -clientkey kkkkk

上面 172.16.168.200:2333 假设是内网的一个服务。

外网的服务器执行:

dtunnel -link xxx -local :8888 -clientkey kkkkk

然后你就可以使用外网 IP 的 8888 端口访问论坛了(消耗你的校园认证流量)。

二、Ngrok

编译:

sudo apt-get install build-essential golang mercurial git

获取源代码:

git clone https://github.com/inconshreveable/ngrok.git ngrok
cd ngrok

生成并替换源码里默认的证书,注意域名修改为你自己的。之后编译出来的服务端客户端会基于这个证书来加密通讯,保证了安全性。

$ NGROK_DOMAIN="bgm.news"

$ openssl genrsa -out base.key 2048
$ openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
$ openssl genrsa -out server.key 2048
$ openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
$ openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt

$ cp base.pem assets/client/tls/ngrokroot.crt

开始编译:

sudo make release-server release-client

如果一切正常,ngrok/bin 目录下应该有 ngrok、ngrokd 两个可执行文件。

服务端

sudo ./bin/ngrokd \
    -tlsKey=server.key \
    -tlsCrt=server.crt \
    -domain="bgm.news" \
    -httpAddr=":8081" \
    -httpsAddr=":8082" \
    -tunnelAddr=":4443"

客户端

写一个简单的配置文件,随意命名如 ngrok.cfg:

server_addr: bgm.news:4443
trust_host_root_certs: false

指定子域、要转发的协议和端口,以及配置文件,运行客户端:

./bin/ngrok -subdomain bbs -proto=http -config=ngrok.cfg 80

现在再访问http://bbs.bgm.news ,访问到的已经是我本机 80 端口上的服务了。

要访问其他机器的服务,只需要修改为:

./bin/ngrok -subdomain bbs -proto=http -config=ngrok.cfg 172.16.168.200:80

详细文档:https://ngrok.com/docs


如何避免消耗自己的认证网络流量?才不告诉你呢~

你可能感兴趣的:(在外网访问校园内网的两种办法)