Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rofl0r/nat-tunnel
NAT Tunnel: to effortlessly serve from behind NAT
https://github.com/rofl0r/nat-tunnel
nat port-forwarding proxy server tcp tunnel tunnel-client tunnel-server
Last synced: about 2 months ago
JSON representation
NAT Tunnel: to effortlessly serve from behind NAT
- Host: GitHub
- URL: https://github.com/rofl0r/nat-tunnel
- Owner: rofl0r
- License: gpl-2.0
- Created: 2018-09-23T03:45:00.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-11-10T18:18:24.000Z (about 3 years ago)
- Last Synced: 2024-10-14T12:46:33.630Z (about 2 months ago)
- Topics: nat, port-forwarding, proxy, server, tcp, tunnel, tunnel-client, tunnel-server
- Language: Python
- Size: 18.6 KB
- Stars: 87
- Watchers: 9
- Forks: 21
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
- awesome-starred - rofl0r/nat-tunnel - NAT Tunnel: to effortlessly serve from behind NAT (server)
- awesome-network-stuff - **26**星
README
NAT Tunnel v0.01
----------------
If you have access to a server with public IP and unfiltered ports
you can run NAT Tunnel (NT) server on the server, and NT client
on your box behind NAT.
the server requires 2 open ports: one for communication with the
NT client (--admin), the other for regular clients to connect to
(--public: this is the port you want your users to use).The NT client opens a connection to the server's admin ip/port.
As soon as the server receives a new connection, it signals the
NT client, which then creates a new tunnel connection to the
server, which is then connected to the desired service on the
NT client's side (--local)The connection between NT Client and NT Server on the admin
interface is protected by a shared secret against unauthorized use.
An adversary who can intercept packets could crack the secret
if it's of insufficient complexity. At least 10 random
characters and numbers are recommended.Example:
You have a HTTP server listening on your local machine on port 80.
You want to make it available on your cloud server/VPS/etc's public
IP on port 7000.
We use port 8000 on the cloud server for the control channel.Server:
natsrv.py --mode server --secret s3cretP4ss --public 0.0.0.0:7000 --admin 0.0.0.0:8000
Client:
natsrv.py --mode client --secret s3cretP4ss --local localhost:80 --admin example.com:8000