内网穿透:内网防火墙只开放443和80端口内网穿透方法

有些地方的内部网络,局域网内的防火墙只开放了80和443,导致局域网访问只能访问网页,凡是涉及到其他的端口的应用就没有办法使用,这个方法就是通过80或443来转发其他端口,让非80或443端口的应用恢复正常

涉及到的应用

内网穿透应用:n2n

GitHub - ntop/n2n: Peer-to-peer VPN

端口转发应用:chisel

GitHub - jpillora/chisel: A fast TCP/UDP tunnel over HTTP

大致步骤:

  1. 先搭建好n2n服务端,方法比较简单,请百度
  2. 搭建chisel服务端,再通过chisel服务端走443或80端口转发n2n服务端端口
  3. 客户端先用chisel客户端连接chisel服务端建立通信,并映射本地端口转发n2n服务端端口
  4. 客户端n2n使用chisel客户端的本地端口,连接到远程的n2n服务端实现内网穿透

一、搭建n2n服务端,方法请百度

二、搭建chisel服务端,服务端配置

wget https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz

gzip chisel_1.9.1_linux_amd64.gz

mv chisel /usr/sbin

chmod +x /usr/sbin/chisel

创建systemd启动配置

Chisel.service

[Unit]

Description=Chisel

[Service]

ExecStart=/usr/sbin/chisel server –auth “user:password” –port 5080

restart=on-failure

[Install]

WantedBy=default.target

再使用nginx来转发chisel服务端的请求,nginx配置文件

map $http_upgrade $connection_upgrade {

default upgrade;

‘’ close;

}

server {

listen 80;

listen 443 ssl;

server_name chisel.domain.com;

root /home/chisel;

index index.html index.htm;

access_log /var/log/nginx/host_chisel.access.log main;

ssl_certificate /etc/fullchain.pem;

ssl_certificate_key /etc/privkey.pem;

location /{

proxy_http_version 1.1;

proxy_pass http://127.0.0.1:5080;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_read_timeout 3600s;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

}

if ($scheme = http) {

return 301 https://$server_name$request_uri;

}

}

三、客户端chisel配置方法

先将chisel下载到本地,并移动到/usr/sbin,并赋予执行权限,chisel systemd配置文件如下,1001为本地n2n连接服务端口,1002为远程n2n服务端口

[Unit]

Description=chisel

[Service]

ExecStart=/usr/sbin/chisel client –auth “user:password” https://chisel.domain.com 1001:127.0.0.1:1002/tcp 1001:127.0.0.1:1002/udp

Restart=on-abort

[Install]

WantedBy=default.target

如果出现下面的报错,可能原因 1.执行命令文件没有权限 2.selinux已开启,没有设置对应权限

service: Failed to execute command: Permission denied

service: Failed at step EXEC spawning Permission denied

四、n2n客户端配置

将n2n服务端端口指上面chisel本地映射端口1001,就可以连接到n2n服务端,连接完后,整个过程就算完成