A fast TCP/UDP tunnel, transported over HTTP WebSocket.
You are right. This project is inspired by jpillora/chisel
(and subsequently
my fork myzhang1029/penguin
), but completely rewritten in Rust without any
linkage to chisel
. The logo is generated by DALL-E
with the prompt "a penguin standing behind a gear wheel, digital art, logo."
$ penguin server --host ::1 --port 443 --tls-cert cert.pem --tls-key key.pem --ws-psk some-secret
See penguin server --help
for more options.
$ penguin client --ws-psk some-secret wss:https://server 1080:socks 80:example.com:80
See penguin client --help
for more options.
Compared to the original penguin
or chisel
, this project stripped away
some functionalities:
-
There is no internal SSH tunnels because it results in double encapsulation when used with HTTPS/WSS.
-
There is no user/password authentication because we do not have SSH. Instead, use PSK authentication.
-
There is no server keep-alive because client keep-alive is enough.
-
There is no support to acquire an ACME certificate on-the-fly.
-
There is no reverse port forwarding because I am too laz