Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/txthinking/zoro
zoro can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration.
https://github.com/txthinking/zoro
expose firewall nat proxy tcp tunnel udp zero-configuration
Last synced: 20 days ago
JSON representation
zoro can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration.
- Host: GitHub
- URL: https://github.com/txthinking/zoro
- Owner: txthinking
- License: gpl-3.0
- Created: 2019-04-25T09:14:44.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-25T12:56:29.000Z (over 1 year ago)
- Last Synced: 2024-04-15T07:17:21.263Z (7 months ago)
- Topics: expose, firewall, nat, proxy, tcp, tunnel, udp, zero-configuration
- Language: Go
- Homepage: https://www.txthinking.com
- Size: 10.1 MB
- Stars: 1,532
- Watchers: 28
- Forks: 126
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-hacking-lists - txthinking/zoro - zoro can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration. (Go)
README
# zoro
[中文](README_ZH.md)
zoro (mr2) can help you expose local server to external network. **Support both TCP/UDP**, of course support HTTP/HTTPS. Keep it **simple**, **stupid**.
❤️ A project by [txthinking.com](https://www.txthinking.com)
### Install via [nami](https://github.com/txthinking/nami)
```
nami install zoro
```### Install via brew
```
brew install zoro
```### Usage
```
NAME:
zoro - Expose local TCP and UDP server to external networkUSAGE:
zoro [global options] command [command options] [arguments...]COMMANDS:
server Run as server mode
client Run as client mode
httpsserver Run as https server mode
httpsclient Run as https client mode
help, h Shows a list of commands or help for one commandGLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
```## `server` and `client`
On remote server. Note that the firewall opens TCP and UDP on all relevant ports
```
$ zoro server --listen :9999 --password password
```> More parameters: $ zoro server --help
On local. Assume your remote zoro server is `1.2.3.4:9999`, your local server is `127.0.0.1:8080`, want the remote server to open port `8888`
```
$ zoro client --server 1.2.3.4:9999 --password password --serverport 8888 --client 127.0.0.1:8080
```> More parameters: $ zoro client --help
Then access `1.2.3.4:8888` equals to access `127.0.0.1:8080`
## `httpsserver` and `httpsclient`
On remote server. Assume your domain is `domain.com`, cert of `*.domain.com` is `./domain_com_cert.pem` and `./domain_com_cert_key.pem`, want https listen on `443`. Note that the firewall opens TCP on all relevant ports
```
$ zoro httpsserver --listen :9999 --password password --domain domain.com --cert ./domain_com_cert.pem --key ./domain_com_cert_key.pem --tlsport 443
```> More parameters: $ zoro httpsserver --help
On local. Assume your remote zoro httpsserver is `1.2.3.4:9999`, your local HTTP 1.1 server is `127.0.0.1:8080`, want the remote server to open subdomain `hello`
```
$ zoro httpsclient --server 1.2.3.4:9999 --password password --subdomain hello --client 127.0.0.1:8080
```> More parameters: $ zoro httpsclient --help
Then access `https://hello.domain.com:443` equals to access `http://127.0.0.1:8080`
## Example of `server` and `client`
#### Expose local HTTP server
```
$ zoro client --server 1.2.3.4:9999 --password password --serverport 8888 --client 127.0.0.1:8080
```Then access `1.2.3.4:8888` equals to access `127.0.0.1:8080`
#### Expose local SSH
```
$ zoro client --server 1.2.3.4:9999 --password password --serverport 8888 --client 127.0.0.1:22
```Then access `1.2.3.4:8888` equals to access `127.0.0.1:22`
```
$ ssh -oPort=8888 [email protected]
```#### Expose local DNS server
```
$ zoro client --server 1.2.3.4:9999 --password password --serveport 8888 --client 127.0.0.1:53
```Then access `1.2.3.4:8888` equals to access `127.0.0.1:53`
```
$ dig github.com @1.2.3.4 -p 8888
```#### Expose local directory via HTTP
```
$ zoro client --server 1.2.3.4:9999 --password password --serverport 8888 --dir /path/to/www --dirport 8080
```Then access `1.2.3.4:8888` equals to access `127.0.0.1:8080`, web root is /path/to/www
#### Expose any TCP/UDP service
```
...
```## About UDP
In some cases of multi-layer NAT, UDP may fail. I passed the test when I connected directly to the Wi-Fi provided by the ISP.
## License
Licensed under The GPLv3 License