Generisches DTLS -Wrapper für UDP -Sitzungen. Wie stunnel , aber für UDP. Geeignet zum Wickeln von Drahtguards oder UDP OpenVPN oder einer anderen verbindungsorientierten UDP-Sitzungen.
"Client" empfängt den klägerlichen UDP -Datenverkehr und leitet ihn über verschlüsselte DTLS -Verbindung an "Server" weiter. "Server" hört den UDP -Port an und akzeptiert verschlüsselte DTLS -Sitzungen, wodurch Nachrichten aus jeder Sitzung als separate UDP -Verbindung an den PlainText -UDP -Port weitergeleitet werden.
Vorgefertigte Binärdateien sind hier erhältlich.
Alternativ können Sie DTLSpipe von Quelle installieren. Führen Sie den folgenden Befehl im Quellverzeichnis aus:
make install
Nehmen wir an, Sie haben das folgende Setup: Sie haben einen Server mit der öffentlichen IP -Adresse 203.0.113.11, aus dem UDP -Dienst auf Port 514 ausgeführt werden. Sie möchten sicher auf diesen Dienst zugreifen und UDP -Datagramme zwischen Ihnen und diesem Dienst verschlüsselt und authentifiziert haben.
dtlspipe genpskdtlspipe -psk xxxxxxxxxxxx server 0.0.0.0:2815 127.0.0.1:514dtlspipe -psk xxxxxxxxxxxx client 127.0.0.1:2816 203.0.113.11:2815127.0.0.1:2816 anstelle von 203.0.113.11:514 für die Kommunikation mit dem Dienst.Nur wenige Notizen:
127.0.0.1 für Portbindungen ist ebenfalls optional und wird in Beispiel verwendet, um den Portzugriff nur von Localhost einzuschränken. Verwenden Sie 0.0.0.0 um den Netzwerkzugriff von außen zu ermöglichen.DTLSPIPE_PSK angegeben werden.Das DTLSpipe -Setup kann mit Beispiel für generische Fall erfolgen. Insbesondere sollte der DTLSpipe -Server auf den Drahtguard -Server -Port verweisen und der Drahtguard -Client sollte mit dem Port des DTLSpipe -Clients kommunizieren.
Sie müssen die folgenden Anpassungen zur Kabelguard -Client -Konfiguration vornehmen:
MTU = 1280 in den Abschnitt [Peer] der Kabelguard -Client- und Server -Tunnelkonfiguration hinzu.AllowedIPs in der Drahtguard Client -Konfiguration ausschließen. Dieser Taschenrechner kann Ihnen helfen. Beispiel für die Serveradresse 203.0.113.11 : AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/5, 200.0.0.0/7, 202.0.0.0/8, 203.0.0.0/18, 203.0.64.0/19, 203.0.96.0/20, 203.0.112.0/24, 203.0.113.0/29, 203.0.113.8/31, 203.0.113.10/32, 203.0.113.12/30, 203.0.113.16/28, 203.0.113.32/27, 203.0.113.64/26, 203.0.113.128/25, 203.0.114.0/23, 203.0.116.0/22, 203.0.120.0/21, 203.0.128.0/17, 203.1.0.0/16, 203.2.0.0/15, 203.4.0.0/14, 203.8.0.0/13, 203.16.0.0/12, 203.32.0.0/11, 203.64.0.0/10, 203.128.0.0/9, 204.0.0.0/6, 208.0.0.0/4, 224.0.0.0/3, ::/0
DTLSPIPE Server überspringt standardmäßig die Helloverify -Nachricht, um einige DPI -Systeme zu verarbeiten. Es ist mit einigen DOS -Sicherheitsrisiken verbunden. Bitte fügen Sie die Serveroption -skip-hello-verify=false wenn ein solches Verhalten unerwünscht ist. Alternativ können solche Risiken mit Firewall gemindert werden, wodurch die Anzahl der Sitzungen auf dem Serveranschluss beschränkt wird.
$ dtlspipe -h
Usage:
dtlspipe [OPTION]... server <BIND ADDRESS> <REMOTE ADDRESS>
Run server listening on BIND ADDRESS for DTLS datagrams and forwarding decrypted UDP datagrams to REMOTE ADDRESS.
dtlspipe [OPTION]... client <BIND ADDRESS> <REMOTE ADDRESS>
Run client listening on BIND ADDRESS for UDP datagrams and forwarding encrypted DTLS datagrams to REMOTE ADDRESS.
dtlspipe [OPTION]... hoppingclient <BIND ADDRESS> <ENDPOINT GROUP> [ENDPOINT GROUP]...
Run client listening on BIND ADDRESS for UDP datagrams and forwarding encrypted DTLS datagrams to a random chosen endpoints.
Endpoints are specified by a list of one or more ENDPOINT GROUP. ENDPOINT GROUP syntax is defined by following ABNF:
ENDPOINT-GROUP = address-term *( "," address-term ) ":" Port
address-term = Domain / IP-range / IP-prefix / IP-address
Domain = <Defined in Section 4.1.2 of [RFC5321]>
IP-range = ( IPv4address ".." IPv4address ) / ( IPv6address ".." IPv6address )
IP-prefix = IP-address "/" 1*DIGIT
IP-address = IPv6address / IPv4address
IPv4address = <Defined in Section 4.1 of [RFC5954]>
IPv6address = <Defined in Section 4.1 of [RFC5954]>
Endpoint is chosen randomly as follows.
First, random ENDPOINT GROUP is chosen with equal probability.
Next, address is chosen from address sets specified by that group, with probability
proportional to size of that set. Domain names and single addresses condidered
as sets having size 1, ranges and prefixes have size as count of addresses in it.
Example: 'example.org:20000-50000' '192.168.0.0/16,10.0.0.0/8,172.16.0.0-172.31.255.255:50000-60000'
dtlspipe [OPTION]... genpsk
Generate and output PSK.
dtlspipe ciphers
Print list of supported ciphers and exit.
dtlspipe curves
Print list of supported elliptic curves and exit.
dtlspipe version
Print program version and exit.
Options:
-cid
enable connection_id extension (default true)
-ciphers value
colon-separated list of ciphers to use
-cpuprofile string
write cpu profile to file
-curves value
colon-separated list of curves to use
-identity string
client identity sent to server
-idle-time duration
max idle time for UDP session (default 30s)
-key-length uint
generate key with specified length (default 16)
-mtu int
MTU used for DTLS fragments (default 1400)
-psk string
hex-encoded pre-shared key. Can be generated with genpsk subcommand
-rate-limit value
limit for incoming connections rate. Format: <limit>/<time duration> or empty string to disable (default 20/1m0s)
-skip-hello-verify
(server only) skip hello verify request. Useful to workaround DPI (default true)
-stale-mode value
which stale side of connection makes whole session stale (both, either, left, right) (default either)
-time-limit duration
limit for each session duration. Use single value X for fixed limit or range X-Y for randomized limit
-timeout duration
network operation timeout (default 10s)