IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Transparent proxy with nftables

    hev发表于 2021-07-24 13:40:55
    love 0

    This is an example of configuring transparent proxy(tproxy) with nftables. The tproxy application is hev-socks5-tproxy

    Netfilter rules

    DON’T FORGOT TO ADD UPSTREAM ADDRESS TO BYPASS IPSET!!
    Or use nftables skuid/skgid match to exclude proxy process.

    table inet mangle {
        set byp4 {
            typeof ip daddr
            flags interval
            elements = { 0.0.0.0/8, 10.0.0.0/8,
                     127.0.0.0/8, 169.254.0.0/16,
                     172.16.0.0/12, 192.0.0.0/24,
                     192.0.2.0/24, 192.88.99.0/24,
                     192.168.0.0/16, 198.18.0.0/15,
                     198.51.100.0/24, 203.0.113.0/24,
                     224.0.0.0/4, 240.0.0.0-255.255.255.255 }
        }
    
        set byp6 {
            typeof ip6 daddr
            flags interval
            elements = { ::,
                     ::1,
                     ::ffff:0:0:0/96,
                     64:ff9b::/96,
                     100::/64,
                     2001::/32,
                     2001:20::/28,
                     2001:db8::/32,
                     2002::/16,
                     fc00::/7,
                     fe80::/10,
                     ff00::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff }
        }
    
        chain prerouting {
            type filter hook prerouting priority mangle; policy accept;
            ip daddr @byp4 return
            ip6 daddr @byp6 return
            tcp dport { 0-65535 } tproxy to :1088 meta mark set 0x00000440 accept
            udp dport { 0-65535 } tproxy to :1088 meta mark set 0x00000440 accept
        }
    
        # Only for local mode
        chain output {
            type route hook output priority mangle; policy accept;
            ip daddr @byp4 return
            ip6 daddr @byp6 return
            tcp dport { 0-65535 } meta mark set 0x00000440
            udp dport { 0-65535 } meta mark set 0x00000440
        }
    }
    

    Routing rules

    ip rule add fwmark 1088 table 100
    ip route add local default dev lo table 100
    
    ip -6 rule add fwmark 1088 table 100
    ip -6 route add local default dev lo table 100
    

    See also: https://github.com/heiher/hev-socks5-tproxy/blob/master/README.md

    The nftables config file that bypass all IPv4 and IPv6 sets of China: https://gist.githubusercontent.com/heiher/fd001c69eda8d1f87bb66c3f44509c11/raw/nftables.conf



沪ICP备19023445号-2号
友情链接