gnu: nftables: Update to 0.8.
[jackhill/guix/guix.git] / gnu / packages / vpn.scm
CommitLineData
49f24f41
AE
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
42c97811 3;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org>
d4bf49b1 4;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
feca8e2b 5;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
8d2de491 6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
5c863d57 7;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
fa3346b8 8;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
49f24f41
AE
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages vpn)
b5b73a82 26 #:use-module ((guix licenses) #:prefix license:)
49f24f41
AE
27 #:use-module (guix packages)
28 #:use-module (guix download)
29 #:use-module (guix build-system gnu)
5c863d57 30 #:use-module (guix build-system python)
49f24f41 31 #:use-module (gnu packages)
71f4b81a 32 #:use-module (gnu packages compression)
1dba6407 33 #:use-module (gnu packages gettext)
49f24f41 34 #:use-module (gnu packages gnupg)
dc77f0d3 35 #:use-module (gnu packages linux)
71f4b81a
AE
36 #:use-module (gnu packages perl)
37 #:use-module (gnu packages pkg-config)
5c863d57 38 #:use-module (gnu packages python)
a7fd7b68 39 #:use-module (gnu packages tls)
71f4b81a 40 #:use-module (gnu packages xml))
49f24f41 41
7af8a9b7
LC
42(define-public gvpe
43 (package
44 (name "gvpe")
3ded2761 45 (version "3.0")
7af8a9b7
LC
46 (source (origin
47 (method url-fetch)
48 (uri (string-append "mirror://gnu/gvpe/gvpe-"
49 version ".tar.gz"))
50 (sha256
51 (base32
3ded2761 52 "1v61mj25iyd91z0ir7cmradkkcm1ffbk52c96v293ibsvjs2s2hf"))))
7af8a9b7
LC
53 (build-system gnu-build-system)
54 (home-page "http://software.schmorp.de/pkg/gvpe.html")
55 (inputs `(("openssl" ,openssl)
56 ("zlib" ,zlib)))
57 (synopsis "Secure VPN among multiple nodes over an untrusted network")
58 (description
59 "The GNU Virtual Private Ethernet creates a virtual network
60with multiple nodes using a variety of transport protocols. It works
61by creating encrypted host-to-host tunnels between multiple
62endpoints.")
63 (license license:gpl3+)))
64
49f24f41
AE
65(define-public vpnc
66 (package
67 (name "vpnc")
68 (version "0.5.3")
69 (source (origin
70 (method url-fetch)
594360f5 71 (uri (string-append "https://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-"
49f24f41
AE
72 version ".tar.gz"))
73 (sha256 (base32
01eafd38 74 "1128860lis89g1s21hqxvap2nq426c9j4bvgghncc1zj0ays7kj6"))
fc1adab1 75 (patches (search-patches "vpnc-script.patch"))))
49f24f41
AE
76 (build-system gnu-build-system)
77 (inputs `(("libgcrypt" ,libgcrypt)
42c97811
LC
78 ("perl" ,perl)
79
80 ;; The following packages provide commands that 'vpnc-script'
81 ;; expects.
82 ("net-tools" ,net-tools) ;ifconfig, route
83 ("iproute2" ,iproute))) ;ip
49f24f41
AE
84 (arguments
85 `(#:tests? #f ; there is no check target
49f24f41 86 #:phases
42c97811
LC
87 (modify-phases %standard-phases
88 (replace 'configure
89 (lambda* (#:key outputs #:allow-other-keys)
90 (let ((out (assoc-ref outputs "out")))
91 (substitute* "Makefile"
92 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
93 (substitute* "Makefile"
94 (("ETCDIR=/etc/vpnc") (string-append "ETCDIR=" out
95 "/etc/vpnc"))))))
96 (add-after 'install 'wrap-vpnc-script
97 (lambda* (#:key inputs outputs #:allow-other-keys)
98 ;; Wrap 'etc/vpnc/vpnc-script' so that it finds the commands it
99 ;; needs. Assume coreutils/grep/sed are in $PATH.
100 (let ((out (assoc-ref outputs "out")))
101 (wrap-program (string-append out "/etc/vpnc/vpnc-script")
102 `("PATH" ":" prefix
103 (,(string-append (assoc-ref inputs "net-tools")
104 "/sbin")
105 ,(string-append (assoc-ref inputs "net-tools")
106 "/bin")
107 ,(string-append (assoc-ref inputs "iproute2")
108 "/sbin"))))))))))
799dcdc4 109 (synopsis "Client for Cisco VPN concentrators")
49f24f41
AE
110 (description
111 "vpnc is a VPN client compatible with Cisco's EasyVPN equipment.
35b9e423 112It supports IPSec (ESP) with Mode Configuration and Xauth. It supports only
49f24f41 113shared-secret IPSec authentication with Xauth, AES (256, 192, 128), 3DES,
35b9e423 1141DES, MD5, SHA1, DH1/2/5 and IP tunneling. It runs entirely in userspace.
49f24f41
AE
115Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
116 (license license:gpl2+) ; some file are bsd-2, see COPYING
117 (home-page "http://www.unix-ag.uni-kl.de/~massar/vpnc/")))
71f4b81a
AE
118
119
120(define-public openconnect
121 (package
122 (name "openconnect")
426aecfd 123 (version "7.08")
71f4b81a
AE
124 (source (origin
125 (method url-fetch)
d4bf49b1
EB
126 (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/"
127 "openconnect-" version ".tar.gz"))
71f4b81a 128 (sha256 (base32
426aecfd 129 "00wacb79l2c45f94gxs63b9z25wlciarasvjrb8jb8566wgyqi0w"))))
71f4b81a
AE
130 (build-system gnu-build-system)
131 (inputs
c4c4cc05 132 `(("libxml2" ,libxml2)
060e365a 133 ("gnutls" ,gnutls)
71f4b81a
AE
134 ("vpnc" ,vpnc)
135 ("zlib" ,zlib)))
c4c4cc05 136 (native-inputs
b94a6ca0 137 `(("gettext" ,gettext-minimal)
c4c4cc05 138 ("pkg-config" ,pkg-config)))
71f4b81a 139 (arguments
d4bf49b1
EB
140 `(#:configure-flags
141 `(,(string-append "--with-vpnc-script="
142 (assoc-ref %build-inputs "vpnc")
143 "/etc/vpnc/vpnc-script"))))
799dcdc4 144 (synopsis "Client for Cisco VPN")
71f4b81a
AE
145 (description
146 "OpenConnect is a client for Cisco's AnyConnect SSL VPN, which is
147supported by the ASA5500 Series, by IOS 12.4(9)T or later on Cisco SR500,
148870, 880, 1800, 2800, 3800, 7200 Series and Cisco 7301 Routers,
149and probably others.")
150 (license license:lgpl2.1)
151 (home-page "http://www.infradead.org/openconnect/")))
dc77f0d3
DT
152
153(define-public openvpn
154 (package
155 (name "openvpn")
dee9a262 156 (version "2.4.4")
dc77f0d3
DT
157 (source (origin
158 (method url-fetch)
159 (uri (string-append
160 "https://swupdate.openvpn.org/community/releases/openvpn-"
161 version ".tar.xz"))
162 (sha256
163 (base32
dee9a262 164 "102an395nv8l7qfx3syydzhmd9xfbycd6gvwy0h2kjz8w67ipkcn"))))
dc77f0d3
DT
165 (build-system gnu-build-system)
166 (arguments
167 '(#:configure-flags '("--enable-iproute2=yes")))
168 (native-inputs
169 `(("iproute2" ,iproute)))
170 (inputs
dee9a262
EF
171 `(("lz4" ,lz4)
172 ("lzo" ,lzo)
dc77f0d3
DT
173 ("openssl" ,openssl)
174 ("linux-pam" ,linux-pam)))
175 (home-page "https://openvpn.net/")
176 (synopsis "Virtual private network daemon")
177 (description "OpenVPN implements virtual private network (VPN) techniques
178for creating secure point-to-point or site-to-site connections in routed or
179bridged configurations and remote access facilities. It uses a custom
180security protocol that utilizes SSL/TLS for key exchange. It is capable of
e881752c 181traversing network address translators (NATs) and firewalls.")
dc77f0d3 182 (license license:gpl2)))
feca8e2b
JM
183
184(define-public tinc
185 (package
186 (name "tinc")
7e19194d 187 (version "1.0.28")
feca8e2b
JM
188 (source (origin
189 (method url-fetch)
190 (uri (string-append "http://tinc-vpn.org/packages/"
191 name "-" version ".tar.gz"))
192 (sha256
193 (base32
7e19194d 194 "0i5kx3hza359nclyhb60kxlzqyx0phmg175350hww28g6scjcl0b"))))
feca8e2b 195 (build-system gnu-build-system)
7b770eca
SB
196 (arguments
197 '(#:configure-flags
198 '("--sysconfdir=/etc"
199 "--localstatedir=/var")))
feca8e2b
JM
200 (inputs `(("zlib" ,zlib)
201 ("lzo" ,lzo)
202 ("openssl" ,openssl)))
203 (home-page "http://tinc-vpn.org")
204 (synopsis "Virtual Private Network (VPN) daemon")
205 (description
206 "Tinc is a VPN that uses tunnelling and encryption to create a secure
207private network between hosts on the internet.")
208 (license license:gpl2+)))
5c863d57
TGR
209
210(define-public sshuttle
211 (package
212 (name "sshuttle")
447f7582 213 (version "0.78.3")
5c863d57
TGR
214 (source
215 (origin
216 (method url-fetch)
217 (uri (pypi-uri name version))
218 (sha256
219 (base32
447f7582 220 "12xyq5h77b57cnkljdk8qyjxzys512b73019s20x6ck5brj1m8wa"))))
5c863d57
TGR
221 (build-system python-build-system)
222 (native-inputs
3308591f 223 `(("python-setuptools-scm" ,python-setuptools-scm)
5c863d57
TGR
224 ;; For tests only.
225 ("python-mock" ,python-mock)
3308591f
TGR
226 ("python-pytest" ,python-pytest)
227 ("python-pytest-runner" ,python-pytest-runner)))
5c863d57
TGR
228 (home-page "https://github.com/sshuttle/sshuttle")
229 (synopsis "VPN that transparently forwards connections over SSH")
230 (description "sshuttle creates an encrypted virtual private network (VPN)
231connection to any remote server to which you have secure shell (SSH) access.
232The only requirement is a suitable version of Python on the server;
233administrative privileges are required only on the client. Unlike most VPNs,
234sshuttle forwards entire sessions, not packets, using kernel transparent
235proxying. This makes it faster and more reliable than SSH's own tunneling and
236port forwarding features. It can forward both TCP and UDP traffic, including
237DNS domain name queries.")
238 (license license:lgpl2.0))) ; incorrectly identified as GPL in ‘setup.py’
1ce6f33b
TGR
239
240(define-public sshoot
241 (package
242 (name "sshoot")
3b4018d6 243 (version "1.2.6")
1ce6f33b
TGR
244 (source
245 (origin
246 (method url-fetch)
247 (uri (pypi-uri name version))
248 (sha256
249 (base32
3b4018d6 250 "1ccgh0hjyxrwkgy3hnxz3hgbjbs0lmfs25d5l5jam0xbpcpj63h0"))))
1ce6f33b 251 (build-system python-build-system)
c0b12a60
MB
252 (arguments
253 '(#:phases
254 (modify-phases %standard-phases
255 (add-after 'unpack 'patch-paths
256 (lambda _
257 (substitute* "sshoot/tests/test_manager.py"
258 (("/bin/sh") (which "sh")))
259 #t)))))
1ce6f33b
TGR
260 (inputs
261 `(("python-argcomplete" ,python-argcomplete)
262 ("python-prettytable" ,python-prettytable)
263 ("python-pyyaml" ,python-pyyaml)))
264 ;; For tests only.
265 (native-inputs
266 `(("python-fixtures" ,python-fixtures)
267 ("python-pbr" ,python-pbr)
268 ("python-testtools" ,python-testtools)))
3b4018d6 269 (home-page "https://github.com/albertodonato/sshoot")
1ce6f33b
TGR
270 (synopsis "sshuttle VPN session manager")
271 (description "sshoot provides a command-line interface to manage multiple
272@command{sshuttle} virtual private networks. It supports flexible profiles
273with configuration options for most of @command{sshuttle}’s features.")
274 (license license:gpl3+)))