This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.

PacketAdapter -- Packet Filtering & Adaptation tools

简介

  • PacketAdapter 是一个基于 iptables 的数据包过滤,转换/适配工具。
  • PacketAdapter 并不会凭空产生数据包,而是将 iptables 过滤的数据包重新转换/适配后再回注到网络中。
  • 可用于 Overlay networks 中 Packet encapsulation and decapsulation屏蔽端到端协议层之间的差异。

应用 -- 实现 GTP Overlay 数据包的解封装

PacketAdapter 通过 iptables 将 Firewall 发送的 GTP RST 包进行过滤,然后将 GTP 数据解封装后回注到网络中。

例如:将 “MAC/IPv4 or IPv6/UDP/GTP1/IPv4 or IPv6/TCP or UDP“ 中的 "/IPv4 or IPv6/UDP/GTP1" 协议层剥离。

+-----------+     +-----------+
| TCP/UDP   |     | TCP/UDP   |
+-----------+     +-----------+
| IPv4/IPv6 |     | IPv4/IPv6 |
+-----------+     +-----------+
| GTP1      |     |           |
+-----------+     |           |
| UDP       | ==> |           |
+-----------+     |           |
| IPv4/IPv6 |     |           |
+-----------+     |           |
| MAC       |     | MAC       |
+-----------+     +-----------+

注意:

  • /MAC/IPv6 的 first next header 必须为 UDP。
  • 目前不支持 GTP 扩展头。

运行环境

# 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 nfq_filter_gtp
systemctl start nfq_filter_gtp

TODO

  • support service
  • support filestat
Description
No description provided
Readme 2.4 MiB
Languages
C++ 76.6%
Shell 15.4%
C 4.5%
CMake 3.5%