技術共有

レイヤ 4 プロキシとレイヤ 7 プロキシの動作、および実際のクライアント IP を取得する方法について説明します。

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

準備

研究室環境

IP役割
192.168.1.100クライアントリクエストIP
192.168.1.100Pythonによって開始されたHTTPサービス
192.168.1.102nginxサービス
192.168.1.103ハプロキシサービス

HTTPサービス

これは、主にクライアント IP を分析するための HTTP メッセージを出力する単純な HTTP サービスです。

#!/usr/bin/env python
# coding: utf-8

import socket
from threading import Thread

# 创建socket对象
sock_srv = socket.socket()

# 绑定IP和port
sock_srv.bind(('0.0.0.0', 5001))

# 开启服务
sock_srv.listen()

# 定义一个函数, 处理来自客户端链接的处理
def socket_deal(conn: socket.socket, address: tuple):
	# 通过socket获取客户端的IP; 这里的客户端IP其实指的是TCP报文中的原始IP和原始Port
	# 就是上一个发起TCP发起的地址 
    print(address)

    # 打印HTTP的报文
    print(conn.recv(1024).decode())

    # 不做特殊处理,所有的请求均返回Hello Word
    template = """
HTTP/1.1 200 OK
Service: HTTP
Version: 1.1.2.2