github.com/ipfans/trojan-go@v0.11.0/docs/content/advance/nat.md (about)

     1  ---
     2  title: "透明代理"
     3  draft: false
     4  weight: 11
     5  ---
     6  
     7  ### 注意,Trojan不完全支持这个特性(UDP)
     8  
     9  Trojan-Go支持基于tproxy的透明TCP/UDP代理。
    10  
    11  要开启透明代理模式,将一份正确的客户端配置(配置方式参见基本配置部分)其中的```run_type```修改为```nat```,并按照需求修改本地监听端口即可。
    12  
    13  之后需要添加iptables规则。这里假定你的网关具有两个网卡,下面这份配置将其中一个网卡(局域网)的入站包转交给Trojan-Go,由Trojan-Go通过隧道,通过另一个网卡(互联网)发送到远端Trojan-Go服务器。你需要将下面的```$SERVER_IP```,```$TROJAN_GO_PORT```,```$INTERFACE```替换为自己的配置。
    14  
    15  ```shell
    16  # 新建TROJAN_GO链
    17  iptables -t mangle -N TROJAN_GO
    18  
    19  # 绕过Trojan-Go服务器地址
    20  iptables -t mangle -A TROJAN_GO -d $SERVER_IP -j RETURN
    21  
    22  # 绕过私有地址
    23  iptables -t mangle -A TROJAN_GO -d 0.0.0.0/8 -j RETURN
    24  iptables -t mangle -A TROJAN_GO -d 10.0.0.0/8 -j RETURN
    25  iptables -t mangle -A TROJAN_GO -d 127.0.0.0/8 -j RETURN
    26  iptables -t mangle -A TROJAN_GO -d 169.254.0.0/16 -j RETURN
    27  iptables -t mangle -A TROJAN_GO -d 172.16.0.0/12 -j RETURN
    28  iptables -t mangle -A TROJAN_GO -d 192.168.0.0/16 -j RETURN
    29  iptables -t mangle -A TROJAN_GO -d 224.0.0.0/4 -j RETURN
    30  iptables -t mangle -A TROJAN_GO -d 240.0.0.0/4 -j RETURN
    31  
    32  # 未命中上文的规则的包,打上标记
    33  iptables -t mangle -A TROJAN_GO -j TPROXY -p tcp --on-port $TROJAN_GO_PORT --tproxy-mark 0x01/0x01
    34  iptables -t mangle -A TROJAN_GO -j TPROXY -p udp --on-port $TROJAN_GO_PORT --tproxy-mark 0x01/0x01
    35  
    36  # 从$INTERFACE网卡流入的所有TCP/UDP包,跳转TROJAN_GO链
    37  iptables -t mangle -A PREROUTING -p tcp -i $INTERFACE -j TROJAN_GO
    38  iptables -t mangle -A PREROUTING -p udp -i $INTERFACE -j TROJAN_GO
    39  
    40  # 添加路由,打上标记的包重新进入本地回环
    41  ip route add local default dev lo table 100
    42  ip rule add fwmark 1 lookup 100
    43  ```
    44  
    45  配置完成后**以root权限启动**Trojan-Go客户端:
    46  
    47  ```shell
    48  sudo trojan-go
    49  ```