Compare commits

..

13 Commits

Author SHA1 Message Date
Adrien Gallouët
d1940692b2 Update README.md
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 14:11:36 +00:00
Adrien Gallouët
d3307a22f8 Add missing netinet/in.h (for freebsd)
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 14:02:53 +00:00
Adrien Gallouët
93cefd6dba Dependency systemd is not mandatory
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 13:52:20 +00:00
Adrien Gallouët
21718c8c14 Update README.md
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 13:22:51 +00:00
Adrien Gallouët
aa54a72bbc Update mud
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 13:18:07 +00:00
Adrien Gallouët
32e6e7575a Update README.md
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 13:13:37 +00:00
Adrien Gallouët
19eea3e96d Add a start section in glorytun-setup
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 12:44:13 +00:00
Adrien Gallouët
75b2903ac2 Add unit systemd files
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-26 08:23:25 +00:00
Adrien Gallouët
0f5a6f5d98 Update .gitignore
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-17 14:43:55 +00:00
Adrien Gallouët
ed90fdea02 Cleanup meson build
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-17 14:42:56 +00:00
Adrien Gallouët
520bd33cb3 Update README.md
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-17 08:35:31 +00:00
Adrien Gallouët
361c695c5c Remove .build.sh
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-17 08:33:44 +00:00
Adrien Gallouët
bc5d622169 Update README.md
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
2017-11-17 08:32:48 +00:00
11 changed files with 198 additions and 32 deletions

View File

@@ -1,18 +0,0 @@
#!/bin/sh
export CC="gcc -static"
git clone https://github.com/jedisct1/libsodium --depth=1 --branch stable
cd libsodium || exit 1
./autogen.sh && ./configure --enable-minimal --disable-shared --prefix=/usr && make install
cd ..
./autogen.sh && ./configure && make
[ -x glorytun ] || exit 1
mkdir -p deploy
cp glorytun deploy/glorytun-$(cat VERSION)-$(uname -m).debug.bin
strip -s glorytun
cp glorytun deploy/glorytun-$(cat VERSION)-$(uname -m).bin

2
.gitignore vendored
View File

@@ -11,3 +11,5 @@ build-aux
.deps .deps
.dirstamp .dirstamp
glorytun glorytun
build*
VERSION

View File

@@ -1,18 +1,53 @@
# π₁(Glorytun)=0 # Glorytun
Small, Simple and Stupid VPN over [mud](https://github.com/angt/mud). Small, Simple and Stupid VPN over [mud](https://github.com/angt/mud).
#### Build and Install ### Build and Install
Glorytun depends on [libsodium](https://github.com/jedisct1/libsodium) version >= 1.0.4. Glorytun depends on [libsodium](https://github.com/jedisct1/libsodium) version >= 1.0.4.
To build and install the latest version: On Ubuntu, the following command should be sufficient:
$ git clone https://github.com/angt/glorytun --recursive --branch mud $ sudo apt-get install meson libsodium-dev pkg-config
Grab the latest release from github:
$ git clone https://github.com/angt/glorytun --recursive
$ cd glorytun $ cd glorytun
$ ./autogen.sh
$ ./configure To build and install the latest version with [meson](http://mesonbuild.com):
$ make
# make install $ meson build
$ sudo ninja -C build install
The more classical autotools suite is also available.
### Easy setup with systemd
Just call `glorytun-setup` and follow the instructions.
Fist, setup the server:
$ sudo glorytun-setup
Config filename (tun0):
Server ip (enter for server conf):
Server key (enter to generate a new one):
Your new key: NEW_KEY
Start glorytun now ? (enter to skip): y
Copy the new generated key and use it when configuring the client:
$ sudo glorytun-setup
Config filename (tun0):
Server ip (enter for server conf): SERVER_IP
Server key (enter to generate a new one): NEW_KEY
Start glorytun now ? (enter to skip): y
You can check easily if it works by looking at your public ip.
To stop the service:
$ sudo systemctl stop glorytun@tun0
---
For feature requests and bug reports, please create an [issue](https://github.com/angt/glorytun/issues). For feature requests and bug reports, please create an [issue](https://github.com/angt/glorytun/issues).

View File

@@ -1,10 +1,49 @@
project('glorytun', 'c', project('glorytun', 'c',
version: run_command('./version.sh').stdout() version: run_command('./version.sh').stdout(),
license: 'BSD-3-Clause',
default_options : [ 'buildtype=debugoptimized' ]
) )
prefix = get_option('prefix')
bindir = join_paths(prefix, get_option('bindir'))
conf_data = configuration_data()
conf_data.set('prefix', prefix)
conf_data.set('bindir', bindir)
add_global_arguments('-DPACKAGE_VERSION="'+meson.project_version()+'"', language : 'c') add_global_arguments('-DPACKAGE_VERSION="'+meson.project_version()+'"', language : 'c')
executable('glorytun', install: true, src = [
sources: [ 'src/main.c', 'src/common.c', 'src/option.c', 'src/tun.c', 'src/iface.c', 'mud/mud.c' ], 'src/common.c',
dependencies: [ dependency('libsodium', version : '>=1.0.4') ] 'src/iface.c',
) 'src/option.c',
'src/tun.c',
'mud/mud.c',
'src/main.c'
]
deps = [
dependency('libsodium', version : '>=1.0.4')
]
executable('glorytun', install: true, sources: src, dependencies: deps)
systemd = dependency('systemd', required: false)
if systemd.found()
systemdutildir = systemd.get_pkgconfig_variable('systemdutildir')
configure_file(
input: 'systemd/glorytun@.service.in',
output: 'glorytun@.service',
configuration: conf_data,
install_dir: join_paths(systemdutildir, 'system')
)
install_data('systemd/glorytun.network',
install_dir: join_paths(systemdutildir, 'network'))
install_data('systemd/glorytun-client.network',
install_dir: join_paths(systemdutildir, 'network'))
install_data('systemd/glorytun-run',
install_dir: bindir)
install_data('systemd/glorytun-setup',
install_dir: bindir)
endif

2
mud

Submodule mud updated: 91cf697fb4...13cf44c813

View File

@@ -15,6 +15,7 @@
#include <stdio.h> #include <stdio.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/time.h> #include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netdb.h> #include <netdb.h>

View File

@@ -0,0 +1,10 @@
[Match]
Name=gtc-*
[Network]
Description=Glorytun client device
DHCP=ipv4
[DHCP]
CriticalConnection=yes
RouteTable=200

29
systemd/glorytun-run Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/sh
if [ ! -f "$1" ]; then
echo "usage: $(basename "$0") FILE"
exit 1
fi
. "$(readlink -f "$1")"
DEV="gt${HOST:+c}-$(basename "$1")"
# Setting BIND is like going to 'expert mode'
# This helper is pretty stupid and still needs some work
if [ -n "$HOST" ] && [ -z "$BIND" ]; then
BIND=$(ip route get "$HOST" | awk '/src/{getline;print $0}' RS=' ')
ip rule add from "$BIND" table main pref 32000
ip rule add from all table 200 pref 32001
fi
exec glorytun \
v4only \
keyfile "$1".key \
dev "$DEV" \
${HOST:+host "$HOST"} \
${PORT:+port "$PORT"} \
${BIND:+bind "$BIND"} \
${BIND_PORT:+bind-port "$BIND_PORT"} \
${MTU:+mtu "$MTU"} \
${MTU_AUTO:+mtu-auto}

42
systemd/glorytun-setup Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/sh
set -e
_ask() {
printf "%s: " "$1"
read -r "$2"
}
_NAME=tun0
_ask "Config filename ($_NAME)" NAME
NAME=${NAME:-$_NAME}
if [ -f /etc/glorytun/"$NAME" ]; then
echo "This config already exit!"
exit 1
fi
_ask "Server ip (enter for server conf)" HOST
_ask "Server key (enter to generate a new one)" KEY
if [ -z "$KEY" ]; then
KEY=$(glorytun keygen) || exit
echo "Your new key: $KEY"
fi
mkdir -p /etc/glorytun
FILE="/etc/glorytun/$NAME"
echo "${HOST:+HOST=$HOST}" > "$FILE"
touch "$FILE.key"
chmod 600 "$FILE.key"
echo "$KEY" > "$FILE.key"
_ask "Start glorytun now ? (enter to skip)" START
case "$START" in
y*|Y*)
systemctl restart systemd-networkd
systemctl start glorytun@"$NAME"
;;
esac

14
systemd/glorytun.network Normal file
View File

@@ -0,0 +1,14 @@
[Match]
Name=gt-*
[Network]
Description=Glorytun server device
Address=0.0.0.0/24
DHCPServer=yes
IPMasquerade=yes
[DHCPServer]
PoolOffset=2
PoolSize=1
EmitDNS=yes
DNS=9.9.9.9

View File

@@ -0,0 +1,12 @@
[Unit]
Description=Glorytun on %I
After=network.target
[Service]
Type=simple
Restart=always
ExecStart=@bindir@/glorytun-run /etc/glorytun/%i
CapabilityBoundingSet=CAP_NET_ADMIN
[Install]
WantedBy=multi-user.target