summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md87
1 files changed, 45 insertions, 42 deletions
diff --git a/README.md b/README.md
index 0fdb4cf..124065c 100644
--- a/README.md
+++ b/README.md
@@ -1,70 +1,73 @@
-## 功能
+# PacketAdapter -- Packet Filtering & Adaptation tools
-并联环境下实现GTP路由封堵功能。
+## 简介
-**实现**
+PacketAdapter 是一个基于 iptables 的数据包过滤,转换/适配工具。
+PacketAdapter 并不会凭空产生数据包,而是将 iptables 过滤的数据包重新转换/适配后再回注到网络中。
+可用于 Overlay networks 中 Packet encapsulation and decapsulation,屏蔽端到端协议层之间的差异。
-将 “=> MAC => IPv4/IPv6 => UDP => GTP1 => IPv4/IPv6 => TCP/UDP“ 中的 "IPv4/IPv6 => UDP => GTP1" 协议层剥离。
+## 应用 -- 实现 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" 协议层剥离。
-原数据包为:
-
-``` shel
-Frame 1: 90 bytes on wire (720 bits), 90 bytes captured (720 bits)
-Ethernet II, Src: JuniperN_4d:d3:51 (08:81:f4:4d:d3:51), Dst: c8:67:d9:18:80:c3 (c8:67:d9:18:80:c3)
-Internet Protocol Version 4, Src: 10.166.20.10, Dst: 10.2.3.35
-User Datagram Protocol, Src Port: 2152, Dst Port: 2152
-GPRS Tunneling Protocol
-Internet Protocol Version 4, Src: 10.58.121.62, Dst: 217.76.78.112
-Transmission Control Protocol, Src Port: 52144, Dst Port: 443, Seq: 1, Ack: 1, Len: 0
```
-
-经过 NFQ 过滤后变为:
-
-``` shel
-Frame 1: 90 bytes on wire (720 bits), 90 bytes captured (720 bits)
-Ethernet II, Src: JuniperN_4d:d3:51 (08:81:f4:4d:d3:51), Dst: c8:67:d9:18:80:c3 (c8:67:d9:18:80:c3)
-Internet Protocol Version 4, Src: 10.58.121.62, Dst: 217.76.78.112
-Transmission Control Protocol, Src Port: 52144, Dst Port: 443, Seq: 1, Ack: 1, Len: 0
++-----------+ +-----------+
+| TCP/UDP | | TCP/UDP |
++-----------+ +-----------+
+| IPv4/IPv6 | | IPv4/IPv6 |
++-----------+ +-----------+
+| GTP1 | | |
++-----------+ | |
+| UDP | ==> | |
++-----------+ | |
+| IPv4/IPv6 | | |
++-----------+ | |
+| MAC | | MAC |
++-----------+ +-----------+
```
-## 构造测试环境
+注意:
+* /MAC/IPv6 的 first next header 必须为 UDP。
+* 目前不支持 GTP 扩展头。
+
+## 运行环境
``` 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
+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/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/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
+# /usr/sbin/iptables -A OUTPUT -o eno2 -j LOG
+# /usr/sbin/ip6tables -A OUTPUT -o eno2 -j LOG
-# make
-yum install -y libnetfilter_queue-devel
-make
-./nfq_filter_gtp
+# 启动服务
+systemctl enable nfq_filter_gtp
+systemctl start nfq_filter_gtp
```
-## 局限
-
-/MAC/IPv6 的 first next header 必须为 UDP,否则跳过。
-
## TODO
-// support service
-// support filestat
+* support service
+* support filestat \ No newline at end of file