内网穿透
1 内网穿透
内网穿透是指在没有公网IP的情况下,将内网的服务暴露到公网,让外网用户通过公网访问内网的服务。
1.1 实现方式与需求
CloudFlare 几乎是目前唯一真正能实现内网穿透的工具,其 ZeroTrust 技术可以实现内网穿透。
需求:
- 可托管CloudFlare的域名,可参考往期文章。
1.2 实现流程
注册 CloudFlare 账户
登录 CloudFlare 控制台,添加(托管)域名替换DNS服务器为 CloudFlare 的 DNS
点击Zero Trust 选择免费套餐
设置管道名字,之后一直点击下一步直到完成
在需要内网穿透的设备上安装 CloudFlare 客户端
1
2
3curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb &&
sudo dpkg -i cloudflared.deb &&配置 CloudFlare 相关服务
1
2
sudo cloudflared service install [密钥]
7.为需要穿透的内网服务添加域名,如web服务 localhost:8080
利用python创建web服务1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36from http.server import BaseHTTPRequestHandler, HTTPServer
import socketserver
PORT = 8080
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
# 简单的HTML页面
html_content = """
<html>
<head>
<title>This is my frist Python web sever</title>
</head>
<body>
<h1>Welcome to my website!</h1>
<p>This is a simple Python web sever.</p>
</body>
</html>
""".encode("utf-8") # 将字符串转换为字节对象
self.wfile.write(html_content)
def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler):
server_address = ('', PORT)
httpd = server_class(server_address, handler_class)
print(f"Starting httpd server on port {PORT}")
httpd.serve_forever()
if __name__ == "__main__":
run()
效果如下: