内网穿透配置

内网穿透配置

van 知其变,守其恒,为天下式.

本文将介绍如何在Ubuntu服务器上配置内网穿透,以便通过公网域名访问内部服务, 以轻量导航站van-nav为例。

前提条件

  • 两台Linux服务器(本文以两台Ubuntu22.04为例)
    • 控制面板服务器IP:18.138.249.128
    • 目标服务器IP:35.212.231.21
  • 目标服务器上运行一个Docker容器或者二进制文件,提供HTTP服务
  • 使用的内网穿透工具支持HTTP协议

配置步骤

1. 确定内网服务地址

在目标服务器上,运行以下命令以查看IP地址:

1
ip addr show

输出示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:0a:8a:00:04 brd ff:ff:ff:ff:ff:ff
inet 10.138.0.4/32 metric 100 scope global dynamic ens4
valid_lft 2138sec preferred_lft 2138sec
inet6 fe80::4001:aff:fe8a:4/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:5c:de:e0:39 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:5cff:fede:e039/64 scope link
valid_lft forever preferred_lft forever

2. 运行Docker容器

在目标服务器上,运行以下命令启动Docker容器, 这条命令的意思是启动docker容器, 并将 Docker 容器中的 /app/data 目录映射到主机上的当前文件夹下:

1
docker run -d --name tools --restart always -p 8080:6412 -v $(pwd):/app/data mereith/van-nav:latest

也可以使用可执行文件, 下载 release 文件夹里面对应平台的二进制文件,直接运行即可. 具体步骤可查看官方文档.

3. 配置服务器端(frps)

在控制面板服务器上,编辑frps.toml文件:

1
2
bindPort = 7000
vhostHttpPort = 8080

4. 配置客户端(frpc)

在目标服务器上,编辑frpc.toml文件:

1
2
3
4
5
6
7
8
9
serverAddr = "18.138.249.128"
serverPort = 7000

[[proxies]]
name = "web"
type = "http"
localIP = "10.138.0.4"
localPort = 8080
customDomains = ["nat1.status.aptzone.cc"]

5. 运行frp

配置 frpssystemd 服务

  1. 创建 frpssystemd 服务单元文件:
1
sudo vim /etc/systemd/system/frps.service
  1. 在文件中添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=FRP Server Service
After=network.target

[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 保存并退出编辑器,然后重新加载 systemd 配置:
1
sudo systemctl daemon-reload
  1. 启动并启用 frps 服务:
1
2
sudo systemctl start frps
sudo systemctl enable frps

配置 frpcsystemd 服务

  1. 创建 frpcsystemd 服务单元文件:
1
sudo vim /etc/systemd/system/frpc.service
  1. 在文件中添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=FRP Client Service
After=network.target

[Service]
Type=simple
ExecStart=/root/frp/frpc -c /root/frp/frpc.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 保存并退出编辑器,然后重新加载 systemd 配置:
1
sudo systemctl daemon-reload
  1. 启动并启用 frpc 服务:
1
2
sudo systemctl start frpc
sudo systemctl enable frpc

检查服务状态

您可以使用以下命令检查 frpsfrpc 服务的状态:

1
2
sudo systemctl status frps
sudo systemctl status frpc

上述步骤正确执行之后, 我们应该可以通过http:// host + port访问了. 但是由于我们的服务并不是在80端口上面运行, 所以还需要配置Nginx反向代理.

6. 确认Nginx Proxy Manager配置

确保Nginx Proxy Manager正确配置代理主机(Proxy Host)来指向您的Docker容器。

  • 域名: nat1.status.aptzone.cc
  • 方案: http
  • 转发主机名 / IP: 18.138.249.128
  • Forward Port: 8080
  • Title: 内网穿透配置
  • Author: van
  • Created at : 2024-08-11 12:07:39
  • Updated at : 2024-10-10 20:36:00
  • Link: https://xblog.aptzone.cc/2024/08/11/内网穿透配置/
  • License: All Rights Reserved © van
Comments