a336893116
* first pass redoc apis * new landing + component update * added intro * new structure * link list * add sandbox sdk * remove theme colours * revert credit to ticket & ticketbook and actually get all the instances to replace * Max/zknym doc tweak (#5223) * revert credit to ticket & ticketbook * revert credit to ticket & ticketbook and actually get all the instances to replace * theme tweak to widen text area * theme redoc component * tweak padding topbar * modified socks5 page to be in line with websocket client * modify h size of autodoc generated command info * tweak script to build from master * add autodoc to workspace * auto commit generated command files * clean autodoc-generated-markdown in script * auto commit generated command files * tweak works * clippy * fix borked toml from cherrypick * remove rm command * auto commit generated command files * blow away images * auto commit generated command files * remove redoc for nymapi for the moment but retain everything else * fix double paste * temp remove sandbox
58 lines
2.5 KiB
Plaintext
58 lines
2.5 KiB
Plaintext
# Socks5 Client (Standalone)
|
|
|
|
> This client can also be utilised via the [Rust SDK](../rust).
|
|
|
|
## What is this client for?
|
|
Many existing applications are able to use either the SOCKS4, SOCKS4A, or SOCKS5 proxy protocols. If you want to send such an application's traffic through the mixnet, you can use the `nym-socks5-client` to bounce network traffic through the Nym network, like this:
|
|
|
|
```mermaid
|
|
---
|
|
config:
|
|
theme: neo-dark
|
|
layout: elk
|
|
---
|
|
flowchart TB
|
|
subgraph Local Machine[Local Machine]
|
|
A[Application Logic]
|
|
B[Nym Socks5 Client]
|
|
end
|
|
A <-->|Bytes| B
|
|
B <-->|Sphinx Packets| EG
|
|
|
|
subgraph Mixnet Nodes[Mixnet Nodes]
|
|
EG[/Entry Gateway/]
|
|
M{Mix Nodes 1..3}
|
|
ExG[\Exit Gateway\]
|
|
end
|
|
EG <-->|Sphinx Packets| M
|
|
M <-->|Sphinx Packets| ExG
|
|
|
|
subgraph External Systems
|
|
C[Blockchain RPC]
|
|
D[Mail Server]
|
|
E[Message Server]
|
|
F[etc]
|
|
end
|
|
C <-->|Bytes| ExG
|
|
D <-->|Bytes| ExG
|
|
E <-->|Bytes| ExG
|
|
F <-->|Bytes| ExG
|
|
```
|
|
|
|
There are 2 pieces of software that work together to send SOCKS traffic through the mixnet: the `nym-socks5-client`, and a `nym-node` running as an Exit Gateway.
|
|
|
|
> The functionality performed by the Exit Gateway was previously performed by the `nym-network-requester`: this functionality has been migrated into the Exit Gateway mode of the `nym-node`.
|
|
|
|
The `nym-socks5-client` allows you to do the following from your local machine:
|
|
* Take a TCP data stream from a application that can send traffic via SOCKS5.
|
|
* Chop up the TCP stream into multiple Sphinx packets, assigning sequence numbers to them, while leaving the TCP connection open for more data
|
|
* Send the Sphinx packets through the Nym Network. Packets are shuffled and mixed as they transit the mixnet.
|
|
|
|
The `nym-node` then reassembles the original TCP stream using the packets' sequence numbers, and make the intended request. It will then chop up the response into Sphinx packets and send them back through the mixnet to your `nym-socks5-client`. The application will then receive its data, without even noticing that it wasn't talking to a "normal" SOCKS5 proxy!
|
|
|
|
## Download or compile socks5 client
|
|
|
|
If you are using OSX or a Debian-based operating system, you can download the `nym-socks5-client` binary from our [Github releases page](https://github.com/nymtech/nym/releases).
|
|
|
|
If you are using a different operating system, or want to build from source, simply use `cargo build --release` from the root of the Nym monorepo.
|