4 releases
new 0.1.3 | May 6, 2024 |
---|---|
0.1.2 | Apr 26, 2024 |
0.1.1 | Apr 25, 2024 |
0.1.0 | Apr 25, 2024 |
#355 in Web programming
321 downloads per month
28KB
660 lines
Traffic Forward
Traffic Forwarding
Read this in other languages: 中文.
What is this
This is a tool that allows you to easily create traffic forwarding rules through this command, which is implemented through the iptables tool.
It creates three iptables rules with one command:
sudo traffic_forward add 193.23.11.3:3333 9988
Equivalent to:
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
It's just a convenient tool.
Quick Start
Prerequisite
- Must be a Linux operating environment.
- The server has enabled traffic forwarding.【95% of people did not take this step】
- The server already has a
Rust
environment.
illustrate
This tool only replaces writing iptables
rules and solves multiple configurations with one command. As iptables
is used, root
account operations are required.
Installation:
cargo install traffic_forward
Upon successful installation, you will see the following path:
...
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`)
【Non-root Account】 Add a soft link to /usr/bin
:
sudo ln -s /home/youre_account/.cargo/bin/traffic_forward /usr/bin/traffic_forward
View version:
traffic_forward --version
traffic_forward 0.1.0
Or:
sudo traffic_forward --version
traffic_forward 0.1.0
Usage:
- Add forwarding:
# Use local port 5555 to forward to 192.102.11.44:8000
sudo traffic_forward add 192.102.11.44:8000 5555
- List of existing rules:
sudo traffic_forward list
0.0.0.0:5555 -> 192.102.11.44:8000
- Query traffic consumption for a specific IP:
sudo traffic_forward query 192.102.11.44
- Delete forwarding rule for a specific IP:
sudo traffic_forward delete 192.102.11.44
Delete completed
- Start the web API:
sudo traffic_forward web 8080
Start web API
traffic_forward web 8080
Add
- uri: iptables/add
- method: post
- request
{
"target_ip": "192.168.50.50",
"target_port": "4488",
"local_port": "4433",
}
- response
{
"code": 1,
"msg": "Success",
"data": null
}
Delete
- uri: iptables/del
- method: post
- request
{
"target_ip": "192.168.50.50"
}
- response
{
"code": 1,
"msg": "Success",
"data": null
}
List
- uri: iptables/list
- method: get
- request: empty (change next version will)
- response
{
"code": 1,
"msg": "Success",
"data": {
"list": [
{
"ip": "192.168.50.50",
"target_port": "4488",
"local_port": "4433"
}
]
}
}
Use demo
$ 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
Dependencies
~21–34MB
~635K SLoC