Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be1b2db867 | ||
|
|
8fbee8701b | ||
|
|
952d160870 | ||
|
|
91ae6becde | ||
|
|
e1f576e4fe | ||
|
|
a7556cabdc | ||
|
|
b2e8d16bb1 | ||
|
|
d95e762812 | ||
|
|
384f927fc3 | ||
|
|
1b7c09ae18 |
151
README.md
151
README.md
@@ -5,13 +5,21 @@
|
|||||||
# GOTO
|
# GOTO
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
- [Quick Start Guide](#quick-start-guide)
|
- [Quick Start Guide](#quick-start-guide)
|
||||||
- [Build](#build)
|
|
||||||
- [How to use?](#how-to-use)
|
- [How to use?](#how-to-use)
|
||||||
- [Systemd Method](#telemt-via-systemd)
|
- [Systemd Method](#telemt-via-systemd)
|
||||||
|
- [Configuration](#configuration)
|
||||||
|
- [Minimal Configuration](#minimal-configuration-for-first-start)
|
||||||
|
- [Advanced](#advanced)
|
||||||
|
- [Adtag](#adtag)
|
||||||
|
- [Listening and Announce IPs](#listening-and-announce-ips)
|
||||||
|
- [Upstream Manager](#upstream-manager)
|
||||||
|
- [IP](#bind-on-ip)
|
||||||
|
- [SOCKS](#socks45-as-upstream)
|
||||||
- [FAQ](#faq)
|
- [FAQ](#faq)
|
||||||
- [Telegram Calls](#telegram-calls-via-mtproxy)
|
- [Telegram Calls](#telegram-calls-via-mtproxy)
|
||||||
- [DPI](#how-does-dpi-see-mtproxy-tls)
|
- [DPI](#how-does-dpi-see-mtproxy-tls)
|
||||||
- [Whitelist on Network Level](#whitelist-on-ip)
|
- [Whitelist on Network Level](#whitelist-on-ip)
|
||||||
|
- [Build](#build)
|
||||||
- [Why Rust?](#why-rust)
|
- [Why Rust?](#why-rust)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
@@ -27,25 +35,27 @@
|
|||||||
- Extensive logging via `trace` and `debug` with `RUST_LOG` method
|
- Extensive logging via `trace` and `debug` with `RUST_LOG` method
|
||||||
|
|
||||||
## Quick Start Guide
|
## Quick Start Guide
|
||||||
|
**This software is designed for Debian-based OS: in addition to Debian, these are Ubuntu, Mint, Kali, MX and many other Linux**
|
||||||
### Build
|
1. Download release
|
||||||
```bash
|
```bash
|
||||||
# Cloning repo
|
wget https://github.com/telemt/telemt/releases/latest/download/telemt
|
||||||
git clone https://github.com/telemt/telemt
|
|
||||||
# Changing Directory to telemt
|
|
||||||
cd telemt
|
|
||||||
# Starting Release Build
|
|
||||||
cargo build --release
|
|
||||||
# Move to /bin
|
|
||||||
mv ./target/release/telemt /bin
|
|
||||||
# Make executable
|
|
||||||
chmod +x /bin/telemt
|
|
||||||
# Lets go!
|
|
||||||
telemt config.toml
|
|
||||||
```
|
```
|
||||||
|
2. Move to Bin Folder
|
||||||
|
```bash
|
||||||
|
mv telemt /bin
|
||||||
|
```
|
||||||
|
4. Make Executable
|
||||||
|
```bash
|
||||||
|
chmod +x /bin/telemt
|
||||||
|
```
|
||||||
|
5. Go to [How to use?](#how-to-use) section for for further steps
|
||||||
|
|
||||||
## How to use?
|
## How to use?
|
||||||
### Telemt via Systemd
|
### Telemt via Systemd
|
||||||
|
**This instruction "assume" that you:**
|
||||||
|
- logged in as root or executed `su -` / `sudo su`
|
||||||
|
- you already have an assembled and executable `telemt` in /bin folder as a result of the [Quick Start Guide](#quick-start-guide) or [Build](#build)
|
||||||
|
|
||||||
**0. Check port and generate secrets**
|
**0. Check port and generate secrets**
|
||||||
|
|
||||||
The port you have selected for use should be MISSING from the list, when:
|
The port you have selected for use should be MISSING from the list, when:
|
||||||
@@ -72,28 +82,8 @@ Open nano
|
|||||||
```bash
|
```bash
|
||||||
nano /etc/telemt.toml
|
nano /etc/telemt.toml
|
||||||
```
|
```
|
||||||
```bash
|
paste your config from [Configuration](#configuration) section
|
||||||
port = 443 # Listening port
|
|
||||||
|
|
||||||
[users]
|
|
||||||
hello = "00000000000000000000000000000000" # Replace the secret with one generated before
|
|
||||||
|
|
||||||
[modes]
|
|
||||||
classic = false # Plain obfuscated mode
|
|
||||||
secure = false # dd-prefix mode
|
|
||||||
tls = true # Fake TLS - ee-prefix
|
|
||||||
|
|
||||||
tls_domain = "petrovich.ru" # Domain for ee-secret and masking
|
|
||||||
mask = true # Enable masking of bad traffic
|
|
||||||
mask_host = "petrovich.ru" # Optional override for mask destination
|
|
||||||
mask_port = 443 # Port for masking
|
|
||||||
|
|
||||||
prefer_ipv6 = false # Try IPv6 DCs first if true
|
|
||||||
fast_mode = true # Use "fast" obfuscation variant
|
|
||||||
|
|
||||||
client_keepalive = 600 # Seconds
|
|
||||||
client_ack_timeout = 300 # Seconds
|
|
||||||
```
|
|
||||||
then Ctrl+X -> Y -> Enter to save
|
then Ctrl+X -> Y -> Enter to save
|
||||||
|
|
||||||
**2. Create service on /etc/systemd/system/telemt.service**
|
**2. Create service on /etc/systemd/system/telemt.service**
|
||||||
@@ -125,9 +115,79 @@ then Ctrl+X -> Y -> Enter to save
|
|||||||
|
|
||||||
**5.** In Shell type `systemctl enable telemt` - then telemt will start with system startup, after the network is up
|
**5.** In Shell type `systemctl enable telemt` - then telemt will start with system startup, after the network is up
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
### Minimal Configuration for First Start
|
||||||
|
```toml
|
||||||
|
port = 443 # Listening port
|
||||||
|
show_links = ["tele", "hello"] # Specify users, for whom will be displayed the links
|
||||||
|
|
||||||
|
[users]
|
||||||
|
tele = "00000000000000000000000000000000" # Replace the secret with one generated before
|
||||||
|
hello = "00000000000000000000000000000000" # Replace the secret with one generated before
|
||||||
|
|
||||||
|
[modes]
|
||||||
|
classic = false # Plain obfuscated mode
|
||||||
|
secure = false # dd-prefix mode
|
||||||
|
tls = true # Fake TLS - ee-prefix
|
||||||
|
|
||||||
|
tls_domain = "petrovich.ru" # Domain for ee-secret and masking
|
||||||
|
mask = true # Enable masking of bad traffic
|
||||||
|
mask_host = "petrovich.ru" # Optional override for mask destination
|
||||||
|
mask_port = 443 # Port for masking
|
||||||
|
|
||||||
|
prefer_ipv6 = false # Try IPv6 DCs first if true
|
||||||
|
fast_mode = true # Use "fast" obfuscation variant
|
||||||
|
|
||||||
|
client_keepalive = 600 # Seconds
|
||||||
|
client_ack_timeout = 300 # Seconds
|
||||||
|
```
|
||||||
|
### Advanced
|
||||||
|
#### Adtag
|
||||||
|
To use channel advertising and usage statistics from Telegram, get Adtag from [@mtproxybot](https://t.me/mtproxybot), add this parameter to the end of config.toml and specify it
|
||||||
|
```toml
|
||||||
|
ad_tag = "00000000000000000000000000000000" # Replace zeros to your adtag from @mtproxybot
|
||||||
|
```
|
||||||
|
#### Listening and Announce IPs
|
||||||
|
To specify listening address and/or address in links, add to the end of config.toml:
|
||||||
|
```toml
|
||||||
|
[[listeners]]
|
||||||
|
ip = "0.0.0.0" # 0.0.0.0 = all IPs; your IP = specific listening
|
||||||
|
announce_ip = "1.2.3.4" # IP in links; comment with # if not used
|
||||||
|
```
|
||||||
|
#### Upstream Manager
|
||||||
|
To specify upstream, add to the end of config.toml:
|
||||||
|
##### Bind on IP
|
||||||
|
```toml
|
||||||
|
[[upstreams]]
|
||||||
|
type = "direct"
|
||||||
|
weight = 1
|
||||||
|
enabled = true
|
||||||
|
interface = "192.168.1.100" # Change to your outgoing IP
|
||||||
|
```
|
||||||
|
##### SOCKS4/5 as Upstream
|
||||||
|
- Without Auth:
|
||||||
|
```toml
|
||||||
|
[[upstreams]]
|
||||||
|
type = "socks5" # Specify SOCKS4 or SOCKS5
|
||||||
|
address = "1.2.3.4:1234" # SOCKS-server Address
|
||||||
|
weight = 1 # Set Weight for Scenarios
|
||||||
|
enabled = true
|
||||||
|
```
|
||||||
|
|
||||||
|
- With Auth:
|
||||||
|
```toml
|
||||||
|
[[upstreams]]
|
||||||
|
type = "socks5" # Specify SOCKS4 or SOCKS5
|
||||||
|
address = "1.2.3.4:1234" # SOCKS-server Address
|
||||||
|
username = "user" # Username for Auth on SOCKS-server
|
||||||
|
password = "pass" # Password for Auth on SOCKS-server
|
||||||
|
weight = 1 # Set Weight for Scenarios
|
||||||
|
enabled = true
|
||||||
|
```
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
### Telegram Calls via MTProxy
|
### Telegram Calls via MTProxy
|
||||||
- Telegram architecture does **NOT allow calls via MTProxy**, but only via SOCKS5, which cannot be obfuscated
|
- Telegram architecture **does NOT allow calls via MTProxy**, but only via SOCKS5, which cannot be obfuscated
|
||||||
### How does DPI see MTProxy TLS?
|
### How does DPI see MTProxy TLS?
|
||||||
- DPI sees MTProxy in Fake TLS (ee) mode as TLS 1.3
|
- DPI sees MTProxy in Fake TLS (ee) mode as TLS 1.3
|
||||||
- the SNI you specify sends both the client and the server;
|
- the SNI you specify sends both the client and the server;
|
||||||
@@ -147,6 +207,23 @@ then Ctrl+X -> Y -> Enter to save
|
|||||||
- in Russia on mobile networks, less in wired networks
|
- in Russia on mobile networks, less in wired networks
|
||||||
- in Iran during "activity"
|
- in Iran during "activity"
|
||||||
|
|
||||||
|
|
||||||
|
## Build
|
||||||
|
```bash
|
||||||
|
# Cloning repo
|
||||||
|
git clone https://github.com/telemt/telemt
|
||||||
|
# Changing Directory to telemt
|
||||||
|
cd telemt
|
||||||
|
# Starting Release Build
|
||||||
|
cargo build --release
|
||||||
|
# Move to /bin
|
||||||
|
mv ./target/release/telemt /bin
|
||||||
|
# Make executable
|
||||||
|
chmod +x /bin/telemt
|
||||||
|
# Lets go!
|
||||||
|
telemt config.toml
|
||||||
|
```
|
||||||
|
|
||||||
## Why Rust?
|
## Why Rust?
|
||||||
- Long-running reliability and idempotent behavior
|
- Long-running reliability and idempotent behavior
|
||||||
- Rust’s deterministic resource management - RAII
|
- Rust’s deterministic resource management - RAII
|
||||||
|
|||||||
Reference in New Issue
Block a user