From 45824ddde48cb5a93c47e706e4601f8468453ed8 Mon Sep 17 00:00:00 2001 From: Mohamed Mahmoud Date: Mon, 29 Jul 2024 14:38:31 -0400 Subject: [PATCH] Allow DNS tracking to use configurable port for tracking Today DNS tracking uses only port 53 which is the port defined for DNS service and it get mapped to different port at the container level to avoid root access. This change wil allow tracking at the pod level as well Signed-off-by: Mohamed Mahmoud --- bpf/configs.h | 1 + bpf/dns_tracker.h | 3 +-- pkg/agent/agent.go | 1 + pkg/agent/config.go | 3 +++ pkg/ebpf/bpf_arm64_bpfel.o | Bin 120928 -> 121144 bytes pkg/ebpf/bpf_powerpc_bpfel.o | Bin 120168 -> 120384 bytes pkg/ebpf/bpf_s390_bpfeb.o | Bin 136064 -> 136272 bytes pkg/ebpf/bpf_x86_bpfel.o | Bin 120736 -> 120952 bytes pkg/ebpf/tracer.go | 9 +++++++++ pkg/pbflow/flow_grpc.pb.go | 25 ++++++++++++++++++------- pkg/pbpacket/packet_grpc.pb.go | 25 ++++++++++++++++++------- 11 files changed, 51 insertions(+), 16 deletions(-) diff --git a/bpf/configs.h b/bpf/configs.h index 397d7548f..c05792442 100644 --- a/bpf/configs.h +++ b/bpf/configs.h @@ -9,4 +9,5 @@ volatile const u8 enable_rtt = 0; volatile const u8 enable_pca = 0; volatile const u8 enable_dns_tracking = 0; volatile const u8 enable_flows_filtering = 0; +volatile const u32 dns_port = 0; #endif //__CONFIGS_H__ diff --git a/bpf/dns_tracker.h b/bpf/dns_tracker.h index a2253fa8c..58f37da3e 100644 --- a/bpf/dns_tracker.h +++ b/bpf/dns_tracker.h @@ -6,7 +6,6 @@ #define __DNS_TRACKER_H__ #include "utils.h" -#define DNS_PORT 53 #define DNS_QR_FLAG 0x8000 #define UDP_MAXMSG 512 #define EINVAL 22 @@ -67,7 +66,7 @@ static __always_inline u8 calc_dns_header_offset(pkt_info *pkt, void *data_end) static __always_inline int track_dns_packet(struct __sk_buff *skb, pkt_info *pkt) { void *data_end = (void *)(long)skb->data_end; - if (pkt->id->dst_port == DNS_PORT || pkt->id->src_port == DNS_PORT) { + if (pkt->id->dst_port == dns_port || pkt->id->src_port == dns_port) { dns_flow_id dns_req; u8 len = calc_dns_header_offset(pkt, data_end); diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index 4342deb66..d026192d4 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -185,6 +185,7 @@ func FlowsAgent(cfg *Config) (*Flows, error) { CacheMaxSize: cfg.CacheMaxFlows, PktDrops: cfg.EnablePktDrops, DNSTracker: cfg.EnableDNSTracking, + DNSTrackerPort: cfg.DNSTrackingPort, EnableRTT: cfg.EnableRTT, EnableFlowFilter: cfg.EnableFlowFilter, FilterConfig: &ebpf.FilterConfig{ diff --git a/pkg/agent/config.go b/pkg/agent/config.go index 852acf4a9..7018c96c2 100644 --- a/pkg/agent/config.go +++ b/pkg/agent/config.go @@ -161,6 +161,9 @@ type Config struct { EnablePktDrops bool `env:"ENABLE_PKT_DROPS" envDefault:"false"` // EnableDNSTracking enable DNS tracking eBPF hook to track dns query/response flows EnableDNSTracking bool `env:"ENABLE_DNS_TRACKING" envDefault:"false"` + // DNSTrackingPort used to define which port the DNS service is mapped to at the pod level, + // so we can track DNS at the pod level + DNSTrackingPort int `env:"DNS_TRACKING_PORT" envDefault:"53"` // StaleEntriesEvictTimeout specifies the maximum duration that stale entries are kept // before being deleted, default is 5 seconds. StaleEntriesEvictTimeout time.Duration `env:"STALE_ENTRIES_EVICT_TIMEOUT" envDefault:"5s"` diff --git a/pkg/ebpf/bpf_arm64_bpfel.o b/pkg/ebpf/bpf_arm64_bpfel.o index dc5ee13a29b7d539c1f63261680ae53b1741a059..6e587494945e18431efeec323baa78a2fd37b7b9 100644 GIT binary patch delta 18298 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

(g&Tl-`x3Kzd?&`G^8B zwYU^l9twu()teJcE~!%r!1UGu1xn!b$UFxfrXgsW-=FD86$P@V7Sod{3dGc6dhkSn zn9|dOCkn)VN>JVU-ksXgRx{5L%oz13J{twU0B#ffB6zppG`K_X4)6iNJHg$8cY%)y z-tD;ODo7Ei0x#h+Nbt+xu;5p~MS|PGvjx*!C>KmEUn+PbxJK|Zba}W|2x#o;1=HBZ znKKZ73ZD&vsV7?m)6i`eOminK_-XL#g10(zK?t_P;Gkd{%N`FO_i)yQFhZaTl6|g+ zqaL0pIENCh1b@{gOTN6+OH4wpa9LS$-Sin31TudRX8V{@)QCvLEQsb9}uO_Wlk%BhYm_ z6@^zQ?8shS5V;NZBsj$p_WdcdtM=;R$WNgre;(`8II&859jParBz3vHm(=4=l3Lk0 zZ$iE3B&m~b>IElB9ktg{YC6FErkaQCy`&xo-8a=dX6L+x6UQIfTi?`kB3GZp3hg7S zVfM_obb;OZmX1c~jQyK3tg&<6MtK)Qjeq~vkq!1< zaa%;$e^Uh-+$@UT(Ybn&z4dK0Yr#oO<6Ig{eaDnN>m5DDZCnp({!Mu|bKd(1-D*hY}HGBU)J*MzEXuhcv(sxm_;ic?Ir#>sYXsU|` z&$ch^#ER-@bh*xcpi>u&U5LhIEdKg>Bxs;iCd7C>&Q$iVI`kO-!zj(?tkkSJH-k<) I@}4gEe-PVq6951J diff --git a/pkg/ebpf/bpf_powerpc_bpfel.o b/pkg/ebpf/bpf_powerpc_bpfel.o index 0a95ce4717a1b5b7279346ad8e8cc53abe455504..1c285eb80307abfa655b9cbfd086aba0bc188379 100644 GIT binary patch delta 18697 zcmaK!3w#vS^~dksY#@s)+3?(ikZd53l|mDcM-Y&WqJ|0*1U0_?21SXjNWfU5MJHIb z(b6__)rqb2A1l(e@~^>wSu0|AsKJ5+r8Tv-T?PM*mTGLZrWI>{XXadTGL>FG%iQld z=f3YfbLY;)?w=2A-#V}{>WdxRHt|fYTjJO0mHOk>gWB@xrSV1nmD-N)@K3jz6@}ZL zNPa=rHSwu*Q7hAw${^l2#o@)noQqn%w!(>owaez;<-^_Bm}vu?$eMVudwrn9xvuoP z`7NI2+AYs=uUGlY8kK5Yls;mRz9W8ZW|`g+e?0R+eNF4^&`O_g#J}R}GNXD|{NT_# z%GAFo4V8SvP3-*J=2L1qV)x)jWv8ppJ|{&R?5L7^LqsI+ZT;@Brv~Ytw$9G`Xo9}K zb@I8ZwXSa6bl#=I^b@V0Ty|@k9^bm^szW}V+d8-EP@0|}53cx*J{o^;#ntIYk#}2s z`E|ou2VYmL<0aP*jL*LQlX&sU-v>IDC`G^TwT`Hc2lXFXpSb1a4E?v(HFpjhsQ(nd z=bmEy$M}wWKJ*>e@m}S59&A2ueSGV4Y5JY`@|L5)fAy(-e{Nl}?YlZKVXf2IL+tpkpUxliQy5_2 z)nNRJS@RfVlx{{mtF_2Fo26S=>ZDf6_XL@^VbD3aUchz-BZFY zA9h!|cGi$zcnqHwhNEG)f-~IavD+c+g0Q=h?Y4XDlEUs;#A{)P8SB3bY2MYA+c$`- zyP(LywG&47b7p1^lODmhQ)Cu_;D>DY9OQi}<$IwI2DKypBiN;5dC*w2xM|cYxKjD* zEksZw^#QI}^-ACD4%#SO5r*vYWWHBqJ{t!4Y`4c__mZ$HgIy8Zy(sL)Kc-z9PWJ-psv#&9 z==99b5J4E=Oq`MNS;=wP1yCalq<NLb8G;C0kx1w^mn0(gFYp->MbLU2kLFJ~`W>65RF}QHSYKOEQlQiV3{}N+r552DnW@xbTodOh z^#HDoZSNNAd4qL*+xR)U(QggcDv7D&KNGV8zoFnR=8KWV=^?FBLZ1hHuizpuxj~cu z3~)s7JaANS09?X+J<792HY-&s1nJ;%=8Z6zmOxvW4^RcSDpkXr30FBhsZ^cdOmHLf z8t5m@(W*)CEO2ulTPg>F78al@oseYSK?Tg$s$1|vaIfGXm^Mk&0|VzMHKJ0h4CX1| zk;}9SGhYTCdL??`B*PU2At?1Eh%w*kBtVZaKMc;RLXQXzgDaWc>Z3=PO@$hnUqSld z3iJrG-@?ryuuiEatQKlPIdMH0{)yOx9uN02Z-9N)jar2QuD#(1^I_80XjRRea~6iQ z14GDcT@1m{11OLM4}deflxk*f0|!&M3xM~On(8Rk&io-|h%WA8egMujfFbB%UOZ2! z0`zcfkemJ%aDJ6moi67nV-Pv5zd?z;{~SHq{`ednv5JtO+oSJcZbpV<&_cR}Pz6l^ z3FbGTFF}{L2%ZS8!VZV*DSeQ7h6a9^MnpoUHb z!_4<1gW(S#L*}F4V3SrA%%6d?nvtL2Ja85Bth1p{YE@_0VnIC%t{~otE@f^4=XYRC znU9hl`! zRJq82?5mhf18SJ>f_+iMr|LZV22c9fP^u8d--Jp>pwtdzFno?r)iXO|9P_CLW@ij5 zeX7~R3Fg4L7?LY}s*`y>IIr5Lx&-HfQ^Xd=Y$XgLH9nOw%V!@L0YS+r~m+zQhFYJFg4(0D0KC|LHapc(Fo?!3(&yr*g`WKd#i*6 zJeN3?q%KqeUUXE>wJRS1Al}d z7QrlKHZ6`Z7hH%Il;dV1cnY}MW8WzBXF}gDI2+u-ybAeQV-{jrvEV5PVmIRU%WNv3 zirfl*L>0g?iU|HHILd77D};U~^bLY(88$M{T#WIbi*?%ECs3Dy+XasScQHS_SgEs; zSoh4Ifv4kc8H&0UBt8oqWi}NmVZN#YejtV0H}g*_u>Qv#Lyb-fFloR|%!iSnpc|8j z*%>q3-IC0Mm!L=LF-MqZ5Mv&73Qh-iF<%aS5P9|(wph^1f?Dv12KeUF-4+pNfisw! z!Nu_95y3OSCCp9*YO#t0r-Nh6f1>j0u*+t)dlqT`b)z7u_E^+-xSo07MX146pK203 z1Ds$sHE0n`HAvc*U8qM}R8)#prZU|g?qxQ^rzX0caUqHxcEqPD1P8&D%y&W`?ZS;t za2B|l89vBTqf$Oq!-A)gAk>kj8UzQxjm*YPw+JRL-O1d6^ucLqs^Tkd1s$%0ev-?k z0jZPB`;BfE7&lGlCgk>wo6cZ18HAXPm#!8ZY=;wMHeR|(FnQ@_=1msdF1hK15s(`O zw=f$w-OkKzTJTVZ1I(h+7;;c}rTFI~qBe}g3mK|KqMn{Hw@Zn{};b{Nx( z*?8#|!Q`cr%*IQ1FdHx3>9VCrKyJE=4UC&k2_`q)&Fn0Bceh%*IP+Ou_wzX1Q_G5eSG)h%y^DUBdj6 z3fD{53nnk!z-+v96SMKs31;J^lT)z%sX*hV+u4Aa+;j)CanmUecQYF=-6NR1bT6~< z(&4FY1BuB?N2lhy0^=l0*ubd(xo!KtrFyjEkE>W^oMg3!>zGgaW5JF;W;R8&2zLE( zV43m9tTIJ)d$<=&o6OKsIE##Q6*|M^8Q{p^bQNX3i}ay%Rm$u6ZW5G$VoEYuQ<^~X&=IV**1`uX8H-Ly>x&cI)9q$JJUjn8EO<0EY zICXp4XQ#@SdNl?u^7KP{4paLFl@YpvpJ3WR;oaoP%YGJ{($S@tV zww?Jl@Hv=doy?cwq$ALPbzxX2M+2Dsmnn5_5)JU^yM#Vq!60&$Tfj3o z7zpeH&vQA5$M8TqIOY~ug$#$(V;Kn^46X)K1x=`7-Uj1)S~2c>%LBq0G&X^y$!tnSX-E_TXR~a4`R_2<6jjxl$H< ziwrU_37J0u4-H}6dorl%%fLxr<4IrVN#Dq9>es~lLJ``Z9>!jq1xqf+!C@{OgC{|X z`J2^n9C-fk@o+Emj41XK3J(is_aBlFGwHLSk1}Ulc&-Zgu_N&$h%vtn{ZKsqRCx52 z%;!R1I0<`okG`JSd1q9DtuphYXh41`_U_Eqeh9|QL5n;Fz05gys+c$pM>OZSEixG- znN9l0d{<8#M1CdApModE(8J8*ZXnO8Rmx>cy@aQP;6h9yHXzOgXPoP1_$?#|R^UvB z`E#^*%ru`;=k@R6F!KsLx1Cn$Q>DyLfdf~f2L*@0bq-_vlPDliip1K@7v*PsvMfwPDCFW_`MU{;@x{OJB)^bH7N z$bbakYr$bWai#>11a}K2JsqPPd(vl=yG*ARfrZ!=Gslr%{v$ZHV{Qirn$e?R=l<{1 za4VJ}8yuwy;r3Y0JmyAl61QWIzQvIx z?!&Pf8|1CRd%goWsbqFqa2$`o%uWkv88TlE`*c5ggxP7(39Z!E+zJ_e=mM92O7ZTD&t_sV%3JzKjw6Nf97>u8fRUmjYxScs`4fJrG zoy=w6(Gm2B;2^l0`CHHz7GjkM9u4kg-VFW7!YGzWh1*4@#-WO~e_pG7=@xyBavJof zVUIWm`5Ihcr)M>6hkD1;&ll@6XI?C?^r>|k|Ep*essypx~G z!0we;!(&lsWH$Q7dHwa}F}DIc*}k6H^hmhO9YQqNDc{)~(ioc-Ct-m7fLc>c#la<> zC%OzA!)=jzz}QzXn;vZNFx_^^-ZYTzVs4MP*Qq*kk2MIEh3jW7;IWhE|A#hBN%X6rbbU5i`eMN z0c8q(J9D-%AdfOi81&k~Rr-qTVjmg~FKz-XoRDj;U!_N7Hw+-c;h2%TT6N6cM(Woy zTs3`fB}1kCHmRRtb;Dq(RBDr*braOs&nO@MtC;SpJGqeQb{VNh!c$S%A$TMi=GtpW zJ=;%0zp5T2mH7I>eiZ5jI|sVzP_Vz6wiHw-eMdkcGTgl;IJ+qPoeYJxUX9Xz44KB) z+PSQY@^!mC1?s^6uzJ3|WVJ3TSnqV(09DCW=0aa5Q{fT&VVLRL?cJ+&v0i0=L`AH1 zYK%>#vF7X7?SdMp_i$R;!&2yW%24VX_7bS|oAwPg`qnA*kvf%-z_?Oq$aAm%bgZ%a zNpso!d%K;rMvt<->-06=tmAGV!v#*Sptl@-pQekmqYvj~IKlP_kNkXYTcanRv2H$= z^WBQfXp%E^P%ziu=$_|-BRqUYKG4WL!#B!Q$TJPLa)lC^lmmMSir$MK4fGZQgs^*2 zPjUg3yr5aE-sb}7V<{OjSx(9Nl_-*S_X^V!dG`fNpp2f0B#Q>7H2tFb+O)*{23 zuH16o#7f0m&J@Jk=RzsPr{6r}Ez$n+_qgZP`2O;bxnTM_M1~;C!;V}G?TegIY=Sh$ z2bx?keZ(QdB6yH8`52d6%mA{1(&_@|EWU#y>Dy8_t5N<)Ir+~}> zWQV6rk37!#&^Hq@;4KJEZ9KPn68v}|nc)ShC&3pir*9!-_&dw#ExrtIbBpQ20vXnD z1Mta$=zmxoWd(ifAj5iY0ev342vyRG*6LYd>GFKq&x|J$2~zW(`C4i z3#PaDGW?nIp?B9ZRC7;fE01Cgw>WH1xfPzDUOCGUFjK%IKg{{jD{C2^VtLflzDjOK zvP4?rFQ8c7;>!D`$7S465l=={Tp@ZDEkhm`OfP(8c%0>UQ`|4aSxzq^`vS_}XNJ_{ z*v{pemU`rEERTBR6S)EO=2M1Ojof2Dm&&y;SrZ<`BV0h8C!;Ku)4Nw0hH?WE9{HnO zaLnW3TUp+Owb0l9$T7@{glCcbm8VS9lhJKlFg^3hkm7vk<&q3*Sx%3D9Nh93^VszE zDIEQIoPgd+$uN~GMCW@loX`0*;sHm7YuLU#CZ$Tf=6A}+A&^HgmkXv7OBr4@T|Hk) z@o)>IoALcDHrvE!xnMe&l;LRr*;kwXH#gfOyqxLONrrjcGCEF^;c_mZ5)T|Q>}Gp9 z-I4((ZkTcIDHh4C2Hq%YGnRPpkYO>)>BK^YnOp#!Zpm;uS142=rFfIc@{Im+OI>6X zo&wxIE5Xf4nnZ(W?$`RDsk3v0VHfQdP2E-UfCy?u)Ld_GFDfAEaVIEG2*gQd z3NuvL5>o#a3zyU- z9`&{MdQv~@)M>PedDO-BHd4RBWmkCA2kf^keXEt?s!|8g3O0|u#I5+12JjDpVfrf| z!&?xcKS7aPCHQAh)C+zLoD{sBe06Vsf%7LLCc_ z1;fuELVvDcnC$7#6AV8__lo97pMYB2@IC->k)QGG(|S!XWSF<3;1mp`gSlK_)sAIZu|}i-UIFuycc{-@IG*l z;1_9boDhPSV34sG{~%BSFXJ~{a0i%9lqisXKYpcxX)eqcObxFPycK+<;8vO&)j~jH zS1Xvtb^~)7;!omd96K@fi^MoZCO)~ndjDq2A!G(~U z2~K+A5O0x)$Kx0AaH-%4(3{75vIkqvXJ&{y1s35-2ly1ofY@y2i09!)UyV^P+#)yz zx!KH-p14cs%fQ|Jxb5EO^d8^beK=F6K#6?#9r5sS!K0x+A-V0IU3#xS>j-c1C=cq% zWA?1QI=^7I-lO;G9eSI7LBFV<)BE&J-J#oci+)BwuXpK}>|6KhIRp7mm)o}O)t_eI zf9{c<-i&chix*r!EO5a-%1@~e?fnPzJYTrN9&}L82-MfR;(B|*L7kud9oUm#fMeVD zPo=&7pf1Y!Hq_+*V|^Mo_HBF5K|LY+j8i19vh}OFD7*L+$y@9)QeSk6)E)MEQeSwA z)SdQjsC9{b!y!E{dlIVuWmW94%MQWnX8XNEI^WJXq$4@2PhqO=w)Y%DYjUCgvd*Zs zbtgIl-)DSjNuj&#vpbQz>J-Tv-Q-uEB6$R*Be@RRHyqaUassC?D?urT^#tEV+J67A z&U0II;VFz`$P>odpJTLO@*l(7>sIL>P<>h7RiLcbko+8^{j%f{d;M$Zka?#ly$Yox z`Ggi8Us@b8lwa=>HC3tjl*W^?gdBm%ppz1E`IDRT&lah`H0R9 zG~VmV>+StVbpF`IXmi@aFIFStddl5|5UZXML~#GuBQujch#ljmyPn!Hk9t$W)KY0IaVC(rj^t&_<;{+YQu6v=Hn zQ{N^xMkmZ%dsC&O7@@P(Oq^}lHqGG;$x`Qdb(T^&I9ooiK6^y2-jv*& zSFRsSzLfVr`l|Ldp{sqq$bXVM@?yFp`T5Y>%l-eMBw?-8Avdk_Z--Ag1>Frg4Zm#l z?KfoTfFJ%>FNTOn|8@J5!=BF7kF~EEdt##A+H|jOY*mOPfK>*;!k$p{h9tWdFZDf>Cf7C{p=i{ z{(JJ{Ez@*Q`-pp<_Uq5vU;6oZKK)TLf7^;PKA=jw;`^sLQ!2Mx=s!tr*)~3STxdQ{ z?%lQ`_z$7^us!n2f8^>fl7R=t>yzzMAILgg|0_AYr9}Tbxw>VV?n`cIc~5`YzINx6 zKK<8Zu=Vob36cE&lIvSX1#jrr-Iyf&t~ak$t`Uk1;6Px z`2N;@+phoC$>Htc!iS*tqe+ADn|PDcwjsZPj=ZNPm$sK!b6EQ*YaJh@d@bbSO73@Y zT*Q8ld;FdhehcAu9{WAv@q0@66~S+X>t_x5t;cbfa2yTCHJo9a$8Wdr3&QUT_G|a} z(X3?2P2v1H_+bM3?}YMWoxEXpu5}w!1;9?2H*q$<^JMd^$R-NkE$sJukKgmc?**K1 zgI_k*35~+zZW^^8M{+xYBdTJlk8y%ks`_vw$00Z49~_?ZWPU(o{v9}sWWW6$zn6qx zIsC@5-$9RG#_@CGLhgJxPGrYdl3Vr^jd%@as!j~Qv)J;7Wcja#ow7`TH6rI3&5V zW4ZM(8)=Qcj`I;XQjfoZa~c!sW15+3aim^-3+J10q<(xG=MUmYJ@+ooJ8-1F>cTmN zZ0eotT4%O7z3~|IBs8i)=po6?slrIuJs(7hLUCT2+?yJ&7bX9k8WlNT=vRvKA0~r) zM@6m^n$6<;-sJqfqpbUdW~VscC(aLx^Y_L1C*r(UoPQ!!a2T!b!fV>Whm`apZg^;n;f_=>Qlv`Mg z+mRtcJhkv6WDso9s+9RFaDFo~6g(CjXP&bN_LNpt96nI|LtxUf(42@Zop`TY%`^ik#&@IPaWPsLoe6lFjO z;_P5rSjl`R>?Kj3s`A)tm`(cVP`5zEQpUUo>4(qrscL3th~qw0<1ohG8N(`{s%Hno z4a|XaF(jAyR2%bR@YoukN(mkVPBUK(do*~}cNz%>@ju1#sMjsFTsJ0epMk1>gqoQrLckU-phH)x!MhIQWmrQW?Pka5wYM zDZeRMstSIT-r-94TjN~?>hDMwm?~tXo9*u+(Y#h@C%FD)=b?qWaU0ES{6owYun$Ws zRUZ(Cg>}q|g`_CMIu=|A&M@Bu`|No>)hW0b+{L^H_L9X|=gc2~<55h~i35i? z%3OQ_8emo6Vj>jN!4;ka31OcLd$ZsOxP^H=GAvw%WySn7IDS1YzszQibTglT-73P> zPnEbeB*j_a9A=ZCRM=<3UL!aHPB712j>j%6%X-19z|DdS!71kZmSg=dNa2Qo6<;BP znYdi`3SI!ti4E++5c3Zz5eK@piZcHiJpMQ;B)AY<$9x#};vUQ)<~`?Q{g>eC)WnLx z7h+86F-e$b5o02?3C;$mm@kDrh)g>@+{IiA`-ldFX2JR39_HpMI7~wv+=JIb_&N0 z4rBZ&1B%Cu>|o+?8?%YWX=amQhMB@Ih2tK<6pnj6{^3%$!sJikxRTiVzEY&1cwEH} zCLY%arg+>SnBs9WGvcumj#JDg9QO#OaIB^eoHIFKi*9R7JPxsgiO1D~DIV7_n|NHu z>EEftZ41+zrE<)aof}MEGY>H|T?8f8O zD@{CxiS8ytD{ym$9j#vGS>Wj4Y?X74Yrm81p==dqcAi3qXRB)F$H_h>Th%as2o7V% zt4{DZa1)q@0fO}aX=a7F0Q3r`3qT*Uxd5mcZU)430mxxC7l06$8Z>bwJ^1@oRPbzY zC9|~>7md3D#kq1!VJ<+bF086JTIhrl6+G5+L0iYPn$oD!_Vord5L zxYWaO<`(k59`{m$L*PmeS2Mp%{zQg!MS*lFB2R9$7f^xQwASK@tlk+Oj((m;d@9htQn6u9AUd+;o(l^Bk<3TBRI{$_)`T;g6JHVCm{ox#nm28FdP3m=1bsTuna@w;YQ|P zz`h8RwAqus#S#wLaOh(mhaG_IDy(a4dr$?}5Mz?2nC}ONtFdYXj|9_eGufaV=D(o= zLo&Ea@vs&5B&c8>hr-7uPyr9uc>EL0PLE;IHh8#^`3mHhjY-?gd>irL*lRrY6m!J{_%~tvbFht1UG@km zcA&*zS`|l7!=VX06|&u_;BK^l*}ocZW>Z*J9(zjI1F$RX;#2;=!vlX{A9$h5K|Egv ztTYsHx4>#-IHVrSNbq2A1(-50Qpvmv{?Q)94G-5d8~+AoXNW#S0|Z;cp=e`8BWjfW zH6|7Fzfr&d(MQpI|l>tYdxw1!jkFtId4jrPv@GgSc?YALCDwX2pNiAaLN$ zveUy|%(G&+p-^}*Kb3)-zE{}uVb59Q_CN%WQ333`hnQV&3>)(?3l2l^_*3d}C}Tbs z_6bvPukNu|Gdr(@N^z^q{16&YREAq)=2yXm^UxrVy^Gl@z*EEI8Q6^Zu3KZ1K@+pd zKrMFd#6e^jV*V05F^(=~9)Ar*POZ|+FXN#gxD0bh@ECB9%a-~H5(F!;d2_B?z&B`d z;SB7BFq{gR}8~S@AtLzmn^~ainLy0vyH$ zV49e&|D+fRMaJXMC7A3z%(QC}Scbb|<|NV=?a;UbaSKd?1I_4BW~YL!Scc3W!Jdt) zV+`zE{|m2&B8BU*$Dxtg*t?lmk^erd}HZp$&d)`58pD~YJk8h)1 z$ByJutbgiqrv;zkO#nMMEudw{d?^xSV;OZZJ1zPeZwNj1-tW5=`VIN#V2|}YmrZ2N zS=P@KSwqV({#1d#Awk|?Oe%H=-hdho$GZ?_Gil|>6jfr1N;WBj8+ zK@Ks&1>iE~TFRhDsW>yTcBGE^QL@JodIbl;jm*bjKVva^MDS<}ie^^iZ-4_rXB%@l zcyts!A~*=nF#iPh2@|kN1dj%HF+W1~7*+|hscPj~HOndv<<`JZB>qx`<+^p(u?+J~fOpxtsFHz~n)&T<{- zaZ+YLkBh{YTmT9s;`UCEfw1@}2u$Qk=>V4yS>iID@Qs;AYl{ zT_g$I*GhY0q07b|i@O!r$NtsKrbqg~G=yl7Q@(SXND4EFn#%DI4c<_L(jaY12KGo4 z*FWk3<6p{bdZ@<3bO9!R(?GhMxjo{R?_AGJmr#LpJ(E2`*Dqo-$x>k10~uU?BzG~J z9;w9Ti0p>xYD0X6HH?aLqrL0_ir(Bsj-7(%U?eatrdUX9T1*2@%hcE@bP*dng`zxR zZ)T1d2MR5tghQ8o`+B`5GSP=hBb*z7haea#W%qGT8?Y( zbB=7oVYz)FnIB^_eO@GGyS<6bNo4B7f2COQB%NHy6nht$gNRgAHht41Wrlr>%xC*a zi4DG7X;f;joqwYqwX}VZYYqhmn!n&e>B|9<=y3P=AZJJ4*+>~}Z$NgDUqYwxq4Nl~ z#rXK7{SeFn3MFKoZ|}cRmlV^7YM213ioMK%zAdH}D?5inzw9 zG44E!Hy_v9+sI5G(NbEvnI-9Q%D|Th_I{Z4Vf+1rzIA#ld$phtk{W#SL2|`fc=DCegU^F;mIfB=7Uwr z^)#7{ccu;s_ULzW!HS2^`2U9+pghAj#8k*L4IbtSHRMqa93|-VcKm20A0&W;-Glm# z=|Eo4tX9Xk0Qx*iiu2JrhKoLXlJdV?FnvsPN@)75MvJN74%Uw3<44>w`uIo68_0Ewy;4V*d^_KHWRvL~tQxLDACrB;+dVq(#F*Z=&%{|}k@&A+yrtd+d_*w79axt{~IHTx9 z>8{k7TrhpNA!R)G9DTnbWhnc1d-T8J9!g6+mHz-IpzkoGd}|8uwD>k|L0gIRMnE}@ z7|)v?{XLvNeI+4fGb&W*jF~6FFS+29ec~3Ze)`x!%I9pRxA#)$6KZEFdGs}0U-~9N z${$%z-!e#{?{q02`dR?eKSbZ~)Sxd8r2Lo*rY{ww{DM2Aatf#mB z{etpOa>4ZaU&l;1#O71A->8Mp)A$kKXWds+D7rjDI{thKQv)oF9KG_C@)EbK$&+9P7u?{{C%J$sPd+)Ur&q300wy2m`}-drO2`-qP@L1gP-{XwB@gODT8rIVjpOhs$G+iG3eDk>gOtZv-{a9QHF{6MXL5yT%SFl( zUIn!IBxS#&AA>K(JPE$y0=k#muWi%|BKM+;hvG58NDklce_$8ij@#x3>^ZmVX_0{A z<>cu&RyRf~B%%8zL)cHG6*CEP&t@bf8zvr0y?+;^azRu3S zLyww%HfQd1JxmxfN8Z7|`M7?YhX|AGc6-AecxuSl40~a#u#-8!sZKq|*=xz1LWkw!;SmQ%%yF*0 zjm!x)o6?Q>V|zcD*P_9cI_63JSNjB+FGZcmT;?&i*~RrRPjsp_ns&w=F`4hTFN9gY zXkSyWZ?)(Ten_ZY&)^s4mKdhL#~~qp3_tq25E8@mXC8(h#|iyehvA2D(j>SY+%=G~ zK6%(F!`=ANA0?2O0_cwr3{wI0HwT8P0Q#E(!+UT-e?wrH{OL~y43mF-)In}A%I_SY zKo1o6JM6`2T=4I~^u0L=Rq$E-=z~WR!}JA_VQO(HE<=*(`9f1+XSb<`vmU?)Alt9<#zzTw*|il?iPHIV)bW2@e&;R1iuXSFULQ0#P1dS zLV`2km|&U-Ft@tey_Gjo?Q6&^KcIyPwSZ`#`!ugZ|HdhZSfb1tdc2x-_#MlRWI4n4yGALyQbSy(f`W5|xZqvWh`}A}ACA<8fo|kn~ zZLPiQppJIzJgDEw(YC$m5O&cv@!x>|#eV3JUg+yvZhv@4&kFQeR3Nsc?cz6dk-oz& ze*+P|%wGKl_RxN8Zvy#h?zHcJLr>I`T_e7>B;!QKsKa*TP0&)u7HC=LIr&|urh#QE*Qp6Py#=SG_Wr{t{9IStf~2H9 zY44{F>>8MVudS(XQb>9PPIKM-)m3iWxDvD6oHEFXoF2FLA3;trcJkTBj-XX_wtgGh z(yIq_owm!N)us08x6v*4+MCFyjD0e0M?7!uC#~7ltgw&0jr@M^bb6p`vpcdOyZ9YF zJ5Vvr#kcLXggtk=SZzP_4$>^K_rHUjDtMC2vDZ>g58C=&Xrt?0-!8lOU0wA5_j;=^ diff --git a/pkg/ebpf/bpf_s390_bpfeb.o b/pkg/ebpf/bpf_s390_bpfeb.o index 9238fbb03d3620b919547a7724dc635da0a27134..21c86cd30a17aef16c97505ba89f6003e8043d84 100644 GIT binary patch delta 20361 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޶foFI-VRE>W^(S#NB0bMg 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 xyrXCOJEyw%rG0>~qsa`sK7lkNpt`J delta 18394 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 A5C8xG diff --git a/pkg/ebpf/tracer.go b/pkg/ebpf/tracer.go index dc6986295..fc2f3f1d1 100644 --- a/pkg/ebpf/tracer.go +++ b/pkg/ebpf/tracer.go @@ -39,6 +39,8 @@ const ( constTraceMessages = "trace_messages" constEnableRtt = "enable_rtt" constEnableDNSTracking = "enable_dns_tracking" + constDNSTrackingPort = "dns_port" + dnsDefaultPort = 53 constEnableFlowFiltering = "enable_flows_filtering" pktDropHook = "kfree_skb" constPcaEnable = "enable_pca" @@ -79,12 +81,14 @@ type FlowFetcherConfig struct { CacheMaxSize int PktDrops bool DNSTracker bool + DNSTrackerPort int EnableRTT bool EnableFlowFilter bool EnablePCA bool FilterConfig *FilterConfig } +// nolint:cyclop func NewFlowFetcher(cfg *FlowFetcherConfig) (*FlowFetcher, error) { if err := rlimit.RemoveMemlock(); err != nil { log.WithError(err). @@ -110,8 +114,12 @@ func NewFlowFetcher(cfg *FlowFetcherConfig) (*FlowFetcher, error) { } enableDNSTracking := 0 + dnsTrackerPort := dnsDefaultPort if cfg.DNSTracker { enableDNSTracking = 1 + if cfg.DNSTrackerPort != 0 { + dnsTrackerPort = cfg.DNSTrackerPort + } } if enableDNSTracking == 0 { @@ -128,6 +136,7 @@ func NewFlowFetcher(cfg *FlowFetcherConfig) (*FlowFetcher, error) { constTraceMessages: uint8(traceMsgs), constEnableRtt: uint8(enableRtt), constEnableDNSTracking: uint8(enableDNSTracking), + constDNSTrackingPort: uint32(dnsTrackerPort), constEnableFlowFiltering: uint8(enableFlowFiltering), }); err != nil { return nil, fmt.Errorf("rewriting BPF constants definition: %w", err) diff --git a/pkg/pbflow/flow_grpc.pb.go b/pkg/pbflow/flow_grpc.pb.go index f9a4eb466..ac00dda6d 100644 --- a/pkg/pbflow/flow_grpc.pb.go +++ b/pkg/pbflow/flow_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc v3.19.4 // source: proto/flow.proto @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Collector_Send_FullMethodName = "/pbflow.Collector/Send" @@ -49,20 +49,24 @@ func (c *collectorClient) Send(ctx context.Context, in *Records, opts ...grpc.Ca // CollectorServer is the server API for Collector service. // All implementations must embed UnimplementedCollectorServer -// for forward compatibility +// for forward compatibility. type CollectorServer interface { Send(context.Context, *Records) (*CollectorReply, error) mustEmbedUnimplementedCollectorServer() } -// UnimplementedCollectorServer must be embedded to have forward compatible implementations. -type UnimplementedCollectorServer struct { -} +// UnimplementedCollectorServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedCollectorServer struct{} func (UnimplementedCollectorServer) Send(context.Context, *Records) (*CollectorReply, error) { return nil, status.Errorf(codes.Unimplemented, "method Send not implemented") } func (UnimplementedCollectorServer) mustEmbedUnimplementedCollectorServer() {} +func (UnimplementedCollectorServer) testEmbeddedByValue() {} // UnsafeCollectorServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to CollectorServer will @@ -72,6 +76,13 @@ type UnsafeCollectorServer interface { } func RegisterCollectorServer(s grpc.ServiceRegistrar, srv CollectorServer) { + // If the following call pancis, it indicates UnimplementedCollectorServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Collector_ServiceDesc, srv) } diff --git a/pkg/pbpacket/packet_grpc.pb.go b/pkg/pbpacket/packet_grpc.pb.go index 5aa9685d9..fce168986 100644 --- a/pkg/pbpacket/packet_grpc.pb.go +++ b/pkg/pbpacket/packet_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc v3.19.4 // source: proto/packet.proto @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Collector_Send_FullMethodName = "/pbpacket.Collector/Send" @@ -49,20 +49,24 @@ func (c *collectorClient) Send(ctx context.Context, in *Packet, opts ...grpc.Cal // CollectorServer is the server API for Collector service. // All implementations must embed UnimplementedCollectorServer -// for forward compatibility +// for forward compatibility. type CollectorServer interface { Send(context.Context, *Packet) (*CollectorReply, error) mustEmbedUnimplementedCollectorServer() } -// UnimplementedCollectorServer must be embedded to have forward compatible implementations. -type UnimplementedCollectorServer struct { -} +// UnimplementedCollectorServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedCollectorServer struct{} func (UnimplementedCollectorServer) Send(context.Context, *Packet) (*CollectorReply, error) { return nil, status.Errorf(codes.Unimplemented, "method Send not implemented") } func (UnimplementedCollectorServer) mustEmbedUnimplementedCollectorServer() {} +func (UnimplementedCollectorServer) testEmbeddedByValue() {} // UnsafeCollectorServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to CollectorServer will @@ -72,6 +76,13 @@ type UnsafeCollectorServer interface { } func RegisterCollectorServer(s grpc.ServiceRegistrar, srv CollectorServer) { + // If the following call pancis, it indicates UnimplementedCollectorServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Collector_ServiceDesc, srv) }