TPROXY与ip_conntrack

socket的IP_TRANSPARENT选项实现代理》中,介绍了IP_TRANSPARENT可以使得保留源IP地址的方法,但是使用了ip_conntrack,我们知道ip_conntrack是要么全部conntrack,要么一个不conntrack的,除非你使用了notrack target,但是判决到底使不使用notrack也需要一番功夫,有没有什么办法可以不使用ip_conntrack却又可以使用IP_TRANSPARENT的呢?因为写到了这里,答案显然是有的,那就是TPROXY,这个TPROXY其实也是一个Netfilter模块,它就是平添了一次查找,那就是一个流是不是本地socket相关的,和ip_conntrack没有关系,不过依然要针对每一个数据包的五元组来查找一下是否属于本地的一个socket,看起来显然这是一个轻量级的ip_conntrack(这只是第一印象,到底怎么回事,这里不说,测试了才知道ip_conntrack是多么的高效)。
root@ImmortalWrt:~# lsmod | grep ipv6 nf_defrag_ipv6 16384 3 nf_conntrack,xt_TPROXY,nft_tproxy nf_reject_ipv6 12288 2 nft_reject_ipv6,nft_reject_inet nf_tables 237568621 nft_redir,nft_nat,nft_masq,nft_fullcone,nft_flow_offload,nft_fib_inet,nft_ct,nft_chain_nat,nf_flow_table_inet,nft_tproxy,nft_reject_ipv6,nft_reject_ipv4,nft_reject_inet,nft_reject,nft_quota,nft_numgen,nft_log,nft_limit,nft_hash,nft_fib_ipv6,nft_fib_ipv4,nft_fib,nft_compat nf_tproxy_ipv6 12288 2 xt_TPROXY,nft_tproxy nft_fib 12288 3 nft_fib_inet,nft_fib_ipv6,nft_fib_ipv4 nft_fib_ipv6 12288 1 nft_fib_inet nft_reject 12288 3 nft_reject_ipv6,nft_reject_ipv4,nft_reject_inet nft_reject_ipv6 12288 0 root@ImmortalWrt:~# ip -6 addr show | grep -v "fe80" 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000 inet6 ::1/128 scope host proto kernel_lo valid_lft forever preferred_lft forever 5: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 state UNKNOWN qlen 500 inet6 fd7a:115c:a1e0::e01:7872/128 scope global valid_lft forever preferred_lft forever valid_lft forever preferred_lft forever 10: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000 inet6 fd22:2c09:bdd5:1::1/64 scope global noprefixroute valid_lft forever preferred_lft forever valid_lft forever preferred_lft forever root@ImmortalWrt:~# nft list ruleset | grep ip6 table ip6 filter { iifname "lo*" ip6 saddr fd7a:115c:a1e0::e01:7872 counter packets 0 bytes 0 accept table ip6 nat { ip6 saddr fe80::/10 icmpv6 type . icmpv6 code { mld-listener-query . 0, mld-listener-report . 0, mld-listener-done . 0, mld2-listener-report . 0 } counter packets 0 bytes 0 accept comment "!fw4: Allow-MLD"
最新发布
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值