概念解释

端口映射是将有公网IP的主机的一个端口映射到内网中一台机器,提供相应的服务。
当用户访问该公网IP的这个端口时,服务器自动将请求映射到对应内网的机器上。
内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,
外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。
就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。
不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。

方法一:FRP

如果你有一台拥有公网IP的主机,比如阿里云服务器等等。可以用此方法。
所以下面的操作是已经拥有一个Linux主机的操作。

下载FRP

Windows和Linux都需要下载相同版本的FRP,不同的版本需要更改命令。
下载地址如下:https://github.com/fatedier/frp/releases
在Linux中可以在终端中输入这样的命令下载,第一个命令是下载,第二个命令是解压:
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
tar xzvf frp_0.32.1_linux_amd64.tar.gz

服务端(Linux)frp的配置

cd frp_0.32.1_linux_amd64
vim frps.ini
输入以下内容并保存退出。
[common]
bind_port = 7000  # 监听端口,为服务器和客户端通信的端口,可以自行更改。
token = 123456    # 认证秘钥,客户端需与服务端一致,可以不写。

下面启动服务端的frp

./frps -c frps.ini 
# 运行时需保持终端打开,否则会结束运行。
以上方式运行未免还是有些不方便,所以最好将其写入到systemd服务。能一直保持开启服务。
sudo vim /etc/systemd/system/frps.service
写入下面内容。保存后退出。
[Unit]
Description=frps daemon    # 服务名称,随便填写即可
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.ini   # 这两个改为你frps的绝对路径
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload        # 重新加载服务
sudo systemctl enable frps.service  # 开机自启
sudo systemctl start frps           # 启动服务
sudo systemctl status frps        # 检查是否启动成功

客户端(Windows)frp的配置

编辑frp的配置文件frpc.ini
[common]
server_addr = 0.0.0.0  # 改为服务器IP地址或域名
server_port = 7000     # 服务器监听端口,和上面的端口一致
token = 123456

[mc]   # 此处名称随意
type = tcp  # 协议类型,如udp,http,https,stpx,xtcp
local_port = 68881       # 本地监听端口,可根据实际修改
remote_port = 25565      # 服务器转发端口
custom_domains = domain  # 服务器域名
进入fpr文件夹,输入下面命令运行。
.\frpc -c frpc.ini
至此,所有配置就做完了。实现的操作可概括为:
frp通过服务器的7000端口
把本机的local port(68881)转发到服务器的remote port(25565)
当访问服务器的25565数据时,其实是本机68881端口的数据。

其他方法

有一些软件提供内网穿透的服务,比如花生壳蒲公英


Simple And Clear