2021-09-13 02:12:29 +00:00
|
|
|
|
# PacketAdapter -- Packet Filtering & Adaptation tools
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
2021-09-13 02:12:29 +00:00
|
|
|
|
## 简介
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
2021-09-16 01:51:22 +00:00
|
|
|
|
|
|
|
|
|
|
- PacketAdapter 是一个基于 iptables 的数据包过滤,转换/适配工具。
|
|
|
|
|
|
- PacketAdapter 并不会凭空产生数据包,而是将 iptables 过滤的数据包重新转换/适配后再回注到网络中。
|
|
|
|
|
|
- 可用于 Overlay networks 中 Packet encapsulation and decapsulation,屏蔽端到端协议层之间的差异。
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
2021-09-13 02:12:29 +00:00
|
|
|
|
## 应用 -- 实现 GTP Overlay 数据包的解封装
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
2021-09-13 02:12:29 +00:00
|
|
|
|
PacketAdapter 通过 iptables 将 Firewall 发送的 GTP RST 包进行过滤,然后将 GTP 数据解封装后回注到网络中。
|
2021-09-16 01:51:22 +00:00
|
|
|
|
|
2021-09-13 02:12:29 +00:00
|
|
|
|
例如:将 “MAC/IPv4 or IPv6/UDP/GTP1/IPv4 or IPv6/TCP or UDP“ 中的 "/IPv4 or IPv6/UDP/GTP1" 协议层剥离。
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
2021-09-13 02:12:29 +00:00
|
|
|
|
+-----------+ +-----------+
|
|
|
|
|
|
| TCP/UDP | | TCP/UDP |
|
|
|
|
|
|
+-----------+ +-----------+
|
|
|
|
|
|
| IPv4/IPv6 | | IPv4/IPv6 |
|
|
|
|
|
|
+-----------+ +-----------+
|
|
|
|
|
|
| GTP1 | | |
|
|
|
|
|
|
+-----------+ | |
|
|
|
|
|
|
| UDP | ==> | |
|
|
|
|
|
|
+-----------+ | |
|
|
|
|
|
|
| IPv4/IPv6 | | |
|
|
|
|
|
|
+-----------+ | |
|
|
|
|
|
|
| MAC | | MAC |
|
|
|
|
|
|
+-----------+ +-----------+
|
2021-09-09 18:56:51 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2021-09-13 02:12:29 +00:00
|
|
|
|
注意:
|
|
|
|
|
|
* /MAC/IPv6 的 first next header 必须为 UDP。
|
|
|
|
|
|
* 目前不支持 GTP 扩展头。
|
|
|
|
|
|
|
|
|
|
|
|
## 运行环境
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
|
|
|
|
|
``` shell
|
2021-09-13 02:12:29 +00:00
|
|
|
|
# yum install --downloadonly --downloaddir=./ libnetfilter_queue.x86_64
|
|
|
|
|
|
# yum install --downloadonly --downloaddir=./ libnetfilter_queue-devel.x86_64
|
|
|
|
|
|
# 安装 libnetfilter_queue
|
|
|
|
|
|
yum install -y libnetfilter_queue
|
|
|
|
|
|
|
2021-09-09 18:56:51 +08:00
|
|
|
|
# 清空 iptables
|
2021-09-13 02:12:29 +00:00
|
|
|
|
iptables -F -t nat
|
|
|
|
|
|
iptables -F -t filter
|
|
|
|
|
|
iptables -F -t mangle
|
|
|
|
|
|
iptables -F -t raw
|
|
|
|
|
|
|
2021-09-09 18:56:51 +08:00
|
|
|
|
ip6tables -F -t nat
|
|
|
|
|
|
ip6tables -F -t filter
|
|
|
|
|
|
ip6tables -F -t mangle
|
|
|
|
|
|
ip6tables -F -t raw
|
|
|
|
|
|
|
|
|
|
|
|
# 增加 iptables
|
2021-09-13 02:12:29 +00:00
|
|
|
|
/usr/sbin/iptables -A OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1
|
2021-09-09 18:56:51 +08:00
|
|
|
|
/usr/sbin/ip6tables -A OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1
|
|
|
|
|
|
|
|
|
|
|
|
# 删除 iptables
|
2021-09-13 02:12:29 +00:00
|
|
|
|
/usr/sbin/iptables -D OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1
|
2021-09-09 18:56:51 +08:00
|
|
|
|
/usr/sbin/ip6tables -D OUTPUT -o eno2 -p udp --dport 2152 -j NFQUEUE --queue-num 1
|
|
|
|
|
|
|
|
|
|
|
|
# 调试 iptables
|
2021-09-13 02:12:29 +00:00
|
|
|
|
# /usr/sbin/iptables -A OUTPUT -o eno2 -j LOG
|
|
|
|
|
|
# /usr/sbin/ip6tables -A OUTPUT -o eno2 -j LOG
|
2021-09-09 18:56:51 +08:00
|
|
|
|
|
2021-09-13 02:12:29 +00:00
|
|
|
|
# 启动服务
|
2023-08-09 18:47:16 +08:00
|
|
|
|
systemctl enable packet_adapter
|
|
|
|
|
|
systemctl start packet_adapter
|
2021-09-09 18:56:51 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## TODO
|
|
|
|
|
|
|
2021-09-16 01:51:22 +00:00
|
|
|
|
|
|
|
|
|
|
- [x] support service
|
|
|
|
|
|
- [ ] support filestat
|