#iptables #forward #ip-address #command-line-interface

bin+lib traffic_forward

这是一个工具,允许您通过此命令轻松创建流量转发规则,该命令通过 iptables 工具实现。

8 个版本

0.1.8 2024 年 6 月 19 日
0.1.7 2024 年 6 月 19 日
0.1.5 2024 年 5 月 22 日
0.1.2 2024 年 4 月 26 日

#4#forward

Download history 319/week @ 2024-04-23 107/week @ 2024-04-30 50/week @ 2024-05-07 145/week @ 2024-05-14 146/week @ 2024-05-21 1/week @ 2024-05-28 153/week @ 2024-06-04 1/week @ 2024-06-11 239/week @ 2024-06-18 8/week @ 2024-07-02

610 每月下载量

MIT/Apache

30KB
574

流量转发

Static Badge

这是一个工具,允许您通过此命令轻松创建流量转发规则,该命令通过 iptables 工具实现。

这是什么

为三个链创建 TCP/UDP 规则

# Chians: PREROUTING、POSTROUTING、FORWARD
sudo traffic_forward add 193.23.11.3:3333 9988

等同于

# 192.168.17.131 is the server host's IP address, automatically fetched.
iptables -t nat -I PREROUTING -p tcp --dport 9988 -j DNAT --to-destination 193.23.11.3:3333
iptables -t nat -I POSTROUTING -d 193.23.11.3 -p tcp --dport 3333 -j SNAT --to-source 192.168.17.131
iptables -t filter -I FORWARD -d 193.23.11.3 -p tcp --dport 3333
iptables -t filter -I FORWARD -s 193.23.11.3 -p tcp --dport 3333
iptables -t nat -I PREROUTING -p udp --dport 9988 -j DNAT --to-destination 193.23.11.3:3333
iptables -t nat -I POSTROUTING -d 193.23.11.3 -p udp --dport 3333 -j SNAT --to-source 192.168.17.131
iptables -t filter -I FORWARD -d 193.23.11.3 -p udp --dport 3333
iptables -t filter -I FORWARD -s 193.23.11.3 -p udp --dport 3333

先决条件

  • 必须是在 Linux 操作系统环境。
  • Iptables 已安装(大多数系统将默认安装)。
  • 服务器已启用流量转发。【95% 的人未采取此步骤】
  • 服务器已经拥有 Rust 环境。

如何启用服务器以启用流量转发

仅供参考,思路相同

# A value of 0 indicates that the forwarding function is not activated, while a value of 1 means it is activated.
cat /proc/sys/net/ipv4/ip_forward

# Temporarily enable forwarding function
echo 1 > /proc/sys/net/ipv4/ip_forward

说明

此工具仅替换编写 iptables 规则,并通过一个命令解决多个配置。由于使用 iptables,需要 root 账户操作。

安装

cargo install traffic_forward

安装成功后,您将看到以下路径

...
 Compiling clap v4.5.4
   Compiling ron v0.8.1
   Compiling traffic_forward v0.1.0
    Finished release [optimized] target(s) in 2m 17s
  Installing /home/youre_account/.cargo/bin/traffic_forward
   Installed package `traffic_forward v0.1.0` (executable `traffic_forward`)

【非 root 账户】向 /usr/bin 添加软链接:

# This is only for your reference, please operate according to your actual path
sudo ln -s /home/youre_account/.cargo/bin/traffic_forward /usr/bin/traffic_forward

查看版本

traffic_forward --version
traffic_forward X.X.X

sudo traffic_forward --version
traffic_forward X.X.X

用法

  • 添加转发:
# Use local port 5555 to forward to 192.102.11.44:8000
sudo traffic_forward add 192.102.11.44:8000 5555
  • 现有规则列表
sudo traffic_forward list
0.0.0.0:5555 -> 192.102.11.44:8000
  • 查询特定 IP 的流量消耗
sudo traffic_forward query 192.102.11.44
  • 删除特定 IP 的转发规则
sudo traffic_forward delete 192.102.11.44
Delete completed
  • 启用 wep 接口
# traffic_forward web <token> [port]
 sudo traffic_forward 1234 8080

启用 wep 接口

# traffic_forward web <token> [port]
traffic_forward web 1234 8080

添加

  • uri: iptables/add
  • 方法: post
  • 请求
{
 "target_ip": "192.168.50.50",
 "target_port": "4488",
 "local_port": "4433",
}
  • 响应
{
 "code": 1,
 "msg": "Success",
 "data": null
}

删除

  • uri: iptables/del
  • 方法: post
  • 请求
{
 "target_ip": "192.168.50.50"
}
  • 响应
{
 "code": 1,
 "msg": "Success",
 "data": null
}

列表

  • uri: iptables/list
  • 方法: get
  • 请求: 空的(下一版本将更改)
  • 响应
{
 "code": 1,
 "msg": "Success",
 "data": {
  "list": [
   {
    "ip": "192.168.50.50",
    "target_port": "4488",
    "local_port": "4433"
   }
  ]
 }
}

用法示例

$ sudo traffic_forward -V
traffic_forward 0.1.2

$ sudo traffic_forward add 192.168.11.11:3389 2233
Add completed

$ sudo traffic_forward list
0.0.0.0:5000 -> 192.145.2.22:323
0.0.0.0:2233 -> 192.168.11.11:3389

$ sudo traffic_forward query 192.168.11.11
Up: 0 KB 
Down: 0 KB

$ sudo traffic_forward delete 192.168.11.11
Delete completed

$ sudo traffic_forward query 192.168.11.11
Query error: No matching IP found

$ sudo traffic_forward list
0.0.0.0:5000 -> 192.145.2.22:323

# When use API 
sudo ./traffic_forward web 1234 8080

# Request test
curl -H"token: 1234" localhost:8080/iptables/list
{"code":1,"msg":"Success","data":{"list":[{"ip":"xxx.xx.xx.xx","target_port":"12581","local_port":"49204"}]}}

许可证

MIT OR Apache-2.0

依赖关系

~21–34MB
~624K SLoC