日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過vtoa獲取地址轉換后的真實客戶端地址

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

在DDoS高防等FullNAT場景下,客戶端地址會被轉換成FullNAT節點的地址。安裝了vtoa的后端服務器可以在Alibaba Cloud Linux 3(內核5.10.134-15及以上版本)上基于TOA調用getsockoptgetpeername,獲取真實的客戶端地址。支持IPv4和IPv6。

使用限制

系統要求:Alibaba Cloud Linux 3,內核5.10.134-15及以上版本。

說明

您可以通過uname -r命令查詢鏡像的內核版本。

應用場景

  • DDoS高防:用戶請求在轉發節點(圖中是 DDoS 防護節點)上經歷地址轉換(FullNAT)。DDoS開啟TOA機制,把真實客戶端的IP端口等信息放在TCP Option中,傳遞給后端源站。后端源站服務器通過vtoa,獲取真實客戶端的IP地址

image
  • CDN加速:業務請求由CDN加速節點轉發至源站,源站可以通過 vtoa 獲取真實客戶端地址。

安裝與配置

警告

vtoa會改變系統調用getpeername的行為,可能為業務帶來非預期影響,請確認需要該功能后再安裝。

安裝與卸載

  • 安裝

    sudo yum install vtoa -y
  • 卸載

    sudo yum remove vtoa -y
說明

安裝后,vtoa即生效,默認開機自動啟動。卸載后,vtoa功能失效。

配置vtoa

vtoa安裝后即生效,默認開機自動啟動。您通常不需要手動配置vtoa。

  • 開啟vtoa

    sudo systemctl start vtoa
  • 關閉vtoa

    sudo systemctl stop vtoa
  • 設置開機自啟動vtoa

    sudo systemctl enable vtoa
  • 關閉開機自啟動vtoa

    sudo systemctl disable vtoa
  • 查看vtoa狀態

    systemctl status vtoa

獲取客戶端真實地址

vtoa開啟后,您可通過系統調用getsockoptgetpeername來獲取客戶端真實地址。

(推薦)調用getsockopt獲取

重要

要求內核5.10.134-17及以上版本(內核版本可通過uname -r命令查看)。

vtoa提供一個新的optname,用于獲取真實客戶端地址,其固定值為 1348。以下為C代碼示例。

struct sockaddr caddr;
int optlen = sizeof(caddr);
int optname = 1348;

getsockopt(fd, IPPROTO_IP, optname, &caddr, &optlen);
// caddr.sa_family可能為AF_INET或AF_INET6,分別對應IPv4和IPv6地址

調用getpeername獲取

重要

該功能在 Alibaba Cloud Linux 3(內核5.10.134-15及以上版本)提供支持。未來可能廢棄。

vtoa開啟后,會返回真實的客戶端地址信息。以下為C代碼示例。

struct sockaddr caddr;
int caddr_len = sizeof(caddr);

getpeername(fd, &caddr, &caddr_len);
// caddr.sa_family可能為AF_INET或AF_INET6,分別對應IPv4和IPv6地址
// accept()也可用于獲取客戶端地址,用法相似

了解支持的toa option格式

vtoa解析的地址信息由TCP option攜帶,需要滿足一定的格式要求。若TCP option不滿足格式要求,則會被vtoa忽略,對應用無影響,相當于未啟用vtoa。

  • TOA(opcode = 254)

    opsize = 8,ip/port為網絡序

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     opcode    |    opsize     |              port             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                              ip                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • TOA_V6(opcode = 253)

    opsize = 20,ip/port為網絡序

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     opcode    |    opsize     |              port             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       +                                                               +
       |                                                               |
       +                              ip                               +
       |                                                               |
       +                                                               +
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+