Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wangyu-/tinyPortMapper

A Lightweight Port Mapping/Forwarding Utility using epoll/libev, supports IPv4 and IPv6 for both TCP and UDP
https://github.com/wangyu-/tinyPortMapper

port-forwarding tcp-proxy udp-proxy

Last synced: about 2 months ago
JSON representation

A Lightweight Port Mapping/Forwarding Utility using epoll/libev, supports IPv4 and IPv6 for both TCP and UDP

Awesome Lists containing this project

README

        

# tinyPortMapper (or tinyPortForwarder)
A Lightweight High-Performance Port Mapping/Forwarding Utility using epoll, Supports both TCP and UDP

# Supported Platforms
Linux host (including desktop Linux,Android phone/tablet, OpenWRT router, or Raspberry PI). Binaries of `amd64` `x86` `mips_be` `mips_le` `arm` are provided.

# Getting Started

### Installing

Download binary release from https://github.com/wangyu-/tinyPortMapper/releases

### Running
Assume you want to map/forward local port 1234 to 10.222.2.1:443
```
# for both TCP and UDP
./tinymapper_amd64 -l0.0.0.0:1234 -r10.222.2.1:443 -t -u

# for TCP only
./tinymapper_amd64 -l0.0.0.0:1234 -r10.222.2.1:443 -t

# for UDP only
./tinymapper_amd64 -l0.0.0.0:1234 -r10.222.2.1:443 -u

# for ipv6, both TCP and UDP
# ipv6 address must be surrounded with `[]`, ipv4 address must NOT be surrounded with `[]`
./tinymapper_amd64 -l[::]:1234 -r[2001:19f0:7001:1111:00:ff:11:22]:443 -t -u
```

##### NOTE
```
# local port and remote port can be the same
./tinymapper_amd64 -l0.0.0.0:443 -r10.222.2.1:443 -u

# you can also use 6-to-4 or 4-to-6 forward
./tinymapper_amd64 -l0.0.0.0:1234 -r[2001:19f0:7001:1111:00:ff:11:22]:443 -t -u
./tinymapper_amd64 -l[::]:1234 -r44.55.66.77:443 -t -u

# you can also use ipv4-mapped ipv6 address
# this is especially useful if you want to play with ipv6 and you dont have a real ipv6 address
./tinymapper_amd64 -l[::]:4433 -r[::ffff:10.222.2.1]:443 -t -u
./tinymapper_amd64 -l[::ffff:0.0.0.0]:4433 -r[::ffff:10.222.2.1]:443 -t -u
```
# Options
```
tinyPortMapper
git version:25ea4ec047 build date:Nov 4 2017 22:55:23
repository: https://github.com/wangyu-/tinyPortMapper

usage:
./this_program -l : -r : [options]

main options:
-t enable TCP forwarding/mapping
-u enable UDP forwarding/mapping

other options:
--sock-buf buf size for socket, >=10 and <=10240, unit: kbyte, default: 1024
--log-level 0: never 1: fatal 2: error 3: warn
4: info (default) 5: debug 6: trace
--log-position enable file name, function name, line number in log
--disable-color disable log color
-h,--help print this help message
```

# Peformance Test
```
root@debian9:~# iperf3 -c 127.0.0.1 -p5202
Connecting to host 127.0.0.1, port 5202
[ 4] local 127.0.0.1 port 37604 connected to 127.0.0.1 port 5202
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 696 MBytes 5.84 Gbits/sec 0 639 KBytes
[ 4] 1.00-2.00 sec 854 MBytes 7.17 Gbits/sec 0 639 KBytes
[ 4] 2.00-3.00 sec 727 MBytes 6.10 Gbits/sec 0 639 KBytes
[ 4] 3.00-4.00 sec 670 MBytes 5.62 Gbits/sec 0 639 KBytes
[ 4] 4.00-5.00 sec 644 MBytes 5.40 Gbits/sec 0 639 KBytes
[ 4] 5.00-6.00 sec 957 MBytes 8.03 Gbits/sec 0 639 KBytes
[ 4] 6.00-7.00 sec 738 MBytes 6.19 Gbits/sec 0 639 KBytes
[ 4] 7.00-8.00 sec 714 MBytes 5.99 Gbits/sec 0 639 KBytes
[ 4] 8.00-9.00 sec 817 MBytes 6.85 Gbits/sec 0 639 KBytes
[ 4] 9.00-10.00 sec 619 MBytes 5.19 Gbits/sec 0 639 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 7.26 GBytes 6.24 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 7.26 GBytes 6.24 Gbits/sec receiver

```

#### Details and more test results at:

https://github.com/wangyu-/tinyPortMapper/wiki/Performance-Test