blob: 6cbc73c6e9be3490dfbcb845c64f4f872aaebb2b [file] [log] [blame]
Amna4e52b162024-01-14 21:16:57 -05001.TH dvpn 1 "December 2023" "dvpn Manual"
2
3.SH NAME
4dvpn \- Distributed VPN
5
6.SH SYNOPSIS
7.B dvpn
8[\-h | \-\-help] [\-\-version] [\-\-listen] [\-\-bootstrap <BOOTSTRAP_ADDRESS>] [\-\-id_path <IDENTITY_PATH>] [\-\-turn_host <TURN_SERVER>] [\-\-turn_user <TURN_USERNAME>] [\-\-turn_pass <TURN_PASSWORD>] [\-\-turn_realm <TURN_REALM>] [\-\-configuration_path_file <CONF_PATH>] <PEER_ID>
9
10.SH DESCRIPTION
11.B dvpn
12is a VPN tool based on the DHTNet library, utilizing a decentralized architecture for peer discovery and communication. It supports both server and client modes, implements a TUN interface for network communication and offers configuration flexibility.
13
14.SH OPTIONS
15.TP
16.B \-h, \-\-help
17Display help information.
18
19.TP
20.B \-V, \-\-version
21Display the version information of dvpn.
22
23.TP
24.B \-l, \-\-listen
25Run dvpn in listen mode, allowing the program to accept incoming VPN connections.
26
27.TP
28.B \-b, \-\-bootstrap <BOOTSTRAP_ADDRESS>
29Specify the address of a bootstrap node to connect to an existing DHT network. Default is "bootstrap.jami.net" if not specified.
30
31.TP
32.B \-I, \-\-id_path <IDENTITY_PATH>
33Specify the path to the identity file used for DHT network interactions. Default is "$HOME/.dhtnet" if not specified.
34
35.TP
36.B \-t, \-\-turn_host <TURN_SERVER>
37Specify the hostname or IP address of the TURN server for network traversal.
38
39.TP
40.B \-u, \-\-turn_user <TURN_USERNAME>
41Specify the username for authentication with the TURN server.
42
43.TP
44.B \-w, \-\-turn_pass <TURN_PASSWORD>
45Specify the password for authentication with the TURN server.
46
47.TP
48.B \-r, \-\-turn_realm <TURN_REALM>
49Specify the realm for authentication with the TURN server.
50
51.TP
52.B \-c, \-\-configuration_path_file <CONF_PATH>
53Specify the path to the configuration file. Default is "dhtnet/tools/dvpn/test_config.yaml" if not specified.
54
55.TP
56.B <PEER_ID>
57The peer ID argument is required when not running in listen mode. It specifies the ID of the target peer or device in the DHT network.
58
59.SH VPN SETUP PROCESS
60For each connection,
61.B dvpn
62dynamically creates a new TUN interface, utilizing information from the configuration file. The setup script then configures the TUN interface and establishes routing logic for the client, as well as managing NAT for the server.
63
64The TUN interfaces are configured as follows:
65
66Server TUN Interface:
67.IP
68<server tun address> 255.255.255.255 <client tun address>
69
70Client TUN Interface:
71.IP
72<client tun address> 255.255.255.255 <server tun address>
73
74.SH NOTES
75.B dvpn
76requires sudo privileges to create and configure TUN interfaces on both the client and server sides.
77
78.SH EXAMPLES
79To run a dvpn server:
80.IP
81$ sudo ./dvpn -l
82
83To connect to a dvpn server:
84.IP
85$ sudo ./dvpn <PEER_ID>
86
87.SH SEE ALSO
88The DHTNet library documentation for more details.
89
90.SH "dvpn 1.0" December 2023 DVPN(1)