内网穿透

内网穿透,即NAT穿透

  • 网络地址转换(Network Address Translation,NAT)机制的问题在于,NAT设备自动屏蔽了非内网主机主动发起的连接,
  • 也就是说,从外网发往内网的数据包将被NAT设备丢弃,这使得位于不同NAT设备之后的主机之间无法直接交换信息。
  • 这一方面保护了内网主机免于来自外部网络的攻击,另一方面也为P2P通信带来了一定困难。

目的

在外网环境中利用内网的主机资源。

方法

内网穿透有多种方法,再此我选择了 frp 来实现。

frp 下载安装

下载可在 github,frp项目 链接https://github.com/fatedier/frp/releases 找适合自己平台的版本,可以用 wget 下载。

  • arm64 平台下载
wget https://github.com/fatedier/frp/releases/download/v0.28.0/frp_0.28.0_linux_arm64.tar.gz
  • 解压
tar -zxvf frp_0.28.0_linux_arm64.tar.gz

server 服务器端配置

config

$ cat frps.ini 
[common]
bind_port = 7000 # 设置与客户端绑定的进行通信的端口

启动服务

./frps -c ./frps.ini # 前台启动
nohup ./frps -c ./frps.ini & # 后台启动

client 客户端配置

config

$ cat frpc.ini 
[common]
server_addr = xxx.xxx.xx.xxx #公网服务器ip
server_port = 7000            #与服务端bind_port一致

#公网通过ssh访问内部服务器
[ssh]
type = tcp              #连接协议
local_ip = 192.168.3.48 #内网服务器ip
local_port = 22         #ssh默认端口号
remote_port = 6000      #自定义的访问内部ssh端口号

启动服务

./frpc -c ./frpc.ini         # 前台启动
nohup ./frpc -c ./frpc.ini & # 后台启动

connection 连接

ssh -p 6000 username@remote_public_ip