From 41025a03ea0e7adf85f520c2cee76fd2607680d2 Mon Sep 17 00:00:00 2001 From: luwenpeng Date: Fri, 11 Aug 2023 09:53:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 99 ++++++++++++++++++------------- platform/test/README.md | 15 +++++ platform/test/inject_packet.pcap | Bin 0 -> 2624 bytes 3 files changed, 73 insertions(+), 41 deletions(-) create mode 100644 platform/test/README.md create mode 100644 platform/test/inject_packet.pcap diff --git a/README.md b/README.md index ed25218..ff0fccf 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,8 @@ ## 简介 - -- PacketAdapter 是一个基于 iptables 的数据包过滤,转换/适配工具。 -- PacketAdapter 并不会凭空产生数据包,而是将 iptables 过滤的数据包重新转换/适配后再回注到网络中。 +- PacketAdapter 是一个数据包过滤/转换/适配工具。 +- PacketAdapter 并不会凭空产生数据包,而是将 MRZCPD 上送的数据包重新转换/适配后通过 RAW Socket 回注到管理口。 - 可用于 Overlay networks 中 Packet encapsulation and decapsulation,屏蔽端到端协议层之间的差异。 ## 应用 -- 实现 GTP Overlay 数据包的解封装 @@ -15,7 +14,7 @@ PacketAdapter 通过 iptables 将 Firewall 发送的 GTP RST 包进行过滤, ``` +-----------+ +-----------+ -| TCP/UDP | | TCP/UDP | +| ********* | | ********* | +-----------+ +-----------+ | IPv4/IPv6 | | IPv4/IPv6 | +-----------+ +-----------+ @@ -24,7 +23,7 @@ PacketAdapter 通过 iptables 将 Firewall 发送的 GTP RST 包进行过滤, | UDP | ==> | | +-----------+ | | | IPv4/IPv6 | | | -+-----------+ | | ++-----------+ | Replace | | MAC | | MAC | +-----------+ +-----------+ ``` @@ -33,44 +32,62 @@ PacketAdapter 通过 iptables 将 Firewall 发送的 GTP RST 包进行过滤, * /MAC/IPv6 的 first next header 必须为 UDP。 * 目前不支持 GTP 扩展头。 -## 运行环境 +## 应用 -- 实现 VLAN Overlay 数据包的解封装 -``` shell -# yum install --downloadonly --downloaddir=./ libnetfilter_queue.x86_64 -# yum install --downloadonly --downloaddir=./ libnetfilter_queue-devel.x86_64 -# 安装 libnetfilter_queue -yum install -y libnetfilter_queue - -# 清空 iptables -iptables -F -t nat -iptables -F -t filter -iptables -F -t mangle -iptables -F -t raw - -ip6tables -F -t nat -ip6tables -F -t filter -ip6tables -F -t mangle -ip6tables -F -t raw - -# 增加 iptables -/usr/sbin/iptables -A OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1 -/usr/sbin/ip6tables -A OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1 - -# 删除 iptables -/usr/sbin/iptables -D OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1 -/usr/sbin/ip6tables -D OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1 - -# 调试 iptables -# /usr/sbin/iptables -A OUTPUT -o eno2 -j LOG -# /usr/sbin/ip6tables -A OUTPUT -o eno2 -j LOG - -# 启动服务 -systemctl enable packet_adapter -systemctl start packet_adapter +``` ++-----------+ +-----------+ +| ********* | | ********* | ++-----------+ +-----------+ +| IPv4/IPv6 | | IPv4/IPv6 | ++-----------+ +-----------+ +| VLAN | ==> | | ++-----------+ | | +| VLAN | | | ++-----------+ | Replace | +| MAC | | MAC | ++-----------+ +-----------+ ``` -## TODO +## 应用 -- 实现 MPLS Overlay 数据包的解封装 +``` ++-----------+ +-----------+ +| ********* | | ********* | ++-----------+ +-----------+ +| IPv4/IPv6 | | IPv4/IPv6 | ++-----------+ +-----------+ +| MPLS | ==> | | ++-----------+ | | +| MPLS | | | ++-----------+ | Replace | +| MAC | | MAC | ++-----------+ +-----------+ +``` -- [x] support service -- [ ] support filestat +## 应用 -- 实现 PPPOE Overlay 数据包的解封装 + +``` ++-----------+ +-----------+ +| ********* | | ********* | ++-----------+ +-----------+ +| IPv4/IPv6 | | IPv4/IPv6 | ++-----------+ +-----------+ +| PPPOE | ==> | | ++-----------+ | Replace | +| MAC | | MAC | ++-----------+ +-----------+ +``` + +``` ++-----------+ +-----------+ +| ********* | | ********* | ++-----------+ +-----------+ +| IPv4/IPv6 | | IPv4/IPv6 | ++-----------+ +-----------+ +| PPPOE | ==> | | ++-----------+ | | +| VLAN | | | ++-----------+ | Replace | +| MAC | | MAC | ++-----------+ +-----------+ +``` \ No newline at end of file diff --git a/platform/test/README.md b/platform/test/README.md new file mode 100644 index 0000000..bf8f2bc --- /dev/null +++ b/platform/test/README.md @@ -0,0 +1,15 @@ +# README + +## 配置 IPv6 测试环境 + +``` shell +# config IPv6 address +/usr/sbin/ip addr add fe80::42:acff:fe11:2/64 dev eth0 + +# config IPv6 route +/usr/sbin/ip -6 route add default dev eth0 via fe80::42:acff:fe11:1 + +# config IPv6 neigh +/usr/sbin/ip -6 neigh flush dev eth0 +/usr/sbin/ip -6 neigh add fe80::42:acff:fe11:1 lladdr aa:aa:bb:bb:cc:cc dev eth0 nud permanent +``` \ No newline at end of file diff --git a/platform/test/inject_packet.pcap b/platform/test/inject_packet.pcap new file mode 100644 index 0000000000000000000000000000000000000000..68c386554cc32b85cfe19bbe074d60916de67a51 GIT binary patch literal 2624 zcmb_ec{J2(AAja&jGf_Ti(-guS2S}&gX}~YaYLjsrm?1REhCI2OJ!#yF2x{Yt?ZGV zEZHN;QZ8M@B@`lhXL`?j-gA2YeZSB7ob!Bt-{tw9@9%q_=QG+~kqZGh_^-eLjG?%; zj=FT-6P*Wh#eT#0qUY10N>&KCWiXbDe}F_*BRf!n4t&!Gm)H} zE~1>A1ZeZ2o-6P)%LEVr@IO3}KTcuzl=T1q7qjA&ST3N)IE0CxDh2=p<>~+mqC+o0 zPDVE<kI<3WFp;VE`iv&RPXyVPS{C;LwjA#BqVs3_BA)WqbmZ5)LtX zfDq~AlmIYJDF9RW3WNtEqcoTquRuu2?PO*~NQ9Y5HGvDbvw|NeE^cV(>-%>%qo=Ph zyjd{_^_9&`E8mofGHyF6SGX$6r~6WVHiZH@mg<|2B@0c8>Ds~GXxEsd#s>D=G~ zF3P#sa8;9!pGDL-IIVwSO_D{rRpgy|UU2J;P{93el={SN?n0q-3rR26w_;dR=l7?0 znpH?omzsawtU`dzg6h@lbf64&ZyF?Rvz%|Z#*XDSQc%G4r-fq7po(31!rc~ z{*=kB1YI`bOw0#W$)|e7182jL%r}Z6u%SXo-ufZWe>G5^toS9&7P9c*32nY zg_B1@RUVi|x?L+>YpT2zSEn*^X0W<}P`u#bYob))qey-{M1mJp5hlL*N`Jr8DkNQM zFLXz@eR9$vQ;WSrKyC+FQ1&9c<*G@2_FC6YS!QF*ZYa&d{JrRyao5lu2x=A%JNR;Z zg=(N>iaC3wDxTz(_4ypS=&YTc_v~=UDXY(Kc(}eTm)jxOn~7|46jwrE^qxK+=h{#@ z8hKN4QR>4KH?06C#xB^lGJ=p9!tT$}ymbY=9$xNXbIia`j87%?B%U^Nk6hI3BH>8U zq!63PpxWLsy~no;%JZ}KNhCgEvDnq|&p1?e*max!nrD!T#slM5-ma#@(V{C)?Ox+pOz^&^?!Ii?}_$krmJS zjjY}gZ5OqZlH=!|EWGlwI!$eTCtishJ31I#TVk5}iEJl_N3K43eJI>`S-JZb!`KI5XH+GBCmDkd|QyB3N^#stZZrJWq*0Pq0Ja@ zdQ-ZbF=fXETRth(v0^zQ$f9z)OYSlGi+Us$yChG-<*}W`zDR%Z)jG|JKp7uh^mq4C z^C++{J|q$sPaqTbu3RXA=d`67tt;|i)t#N4x>dd!%6aELy}ho8-6>B#-|iDVztV0K z-JFPi%BR^HwtCPD~ovGhfr75ICP=rby%U@$Kb8h}h z^l5m?qnj-;H)5meFEu#d=#xMxQQ89rrKLU#C9G>rp);I{X*kyz7K4T^A%zY0Wi0`( zmkN)o0w;Z)Z0`KQZIZ=;9!Zg!Je?Ewmx{N>e9u_Tt|}mb5_Bar-U#@>of8ghU6Y-{ZN&sLvS7h>M6P=B>!C_tSNKex{@*P^D zz~wTlvE4$h4GeGyC@+~mTUbyi@iwV%HsRsYse583Npn{phzNB%UpOnUvYtx+-2wgTH~vdIS`O46 zVtIXwX{=0q^Jw3(S}nfAwvvu6&fA*bAA4+U_71-cdf2Ke0~;10hwqeMHM7rcGNlUS zv6{+8H9FZ>v>jV{O}*ZE^BoE`k09Q8?;lkJ^bdUEkn{KOhZiGfqiF?1RiZ)f%3`ke zWed`!QB0B6uKVPkoZ^kXbe=^n3>`3)?xC2ZOLp_K--MAmjH77LF|DhL`Y zx~*4LC*B{FW%*=wxSrY}FgL8utsH~qn|)O8HV|sfreVCG$+X%ysdG7kU_Q zSLevwrA;|K@2`px^JG`Y(_3f$%FP!&s!7CdhZ6U2nFz<}4OyjUBaLBW-#TqPTR-}1 zk2cs6+;pjUaqyi*94Nkt=tKRDR3AX2