OpenBSD ile Bedava VPN servislerine baglanma.


    OpenBSD de OpenVPN ile  FreeVPN(vpnbook,riseup vs) servislerine baglanamiyabilirsiniz.(Nasil bir cumle kurmusum oyle ^_^).
Bunun nedeni, OpenBSD'nin OpenSSL de bulunan guvenlik aciklarindan dert yanip(heartbleed), kendi SSL yazilimini gelistirmesi ve
bunu OpenVPN de ontanimli yapmasidir.(LibreSSL) Hal boyle olunca, biz de riseup yada vpnbook gibi BedavaVPN servislerine baglanmak
istedigimiz de Sertifika dogrulama hatasi almaktayiz. Denize dusen yilana sarilir misali, guvenlikten taviz vererek baglanmak
isterseniz. OpenVPN'e OpenSSL'i ontanimli yapmaktan gecer. Ben de buna cozum bulmak adina ve sadece riseup VPN'e baglanmakta
kullanmak icin ayri bir OpenVPN derledim. Adini da openvpn-openssl dedim ve /usr/local/bin dizinine kopyaladim.

Eger sizde, OpenBSD isletim sistemini, benim gibi dizustunuz de kullaniyorsaniz faydali olabilir
diyerek islemlere gecebiliriz. Zaten evde ki PC'niz de kullaniyorsaniz sorun yok. Kendi icinde
VPN servislerine baglanan modemler oldugu icin bu isleme gerek yok. ^_^

Oncelikle openvpn yazilimini indirelim.
$ wget http://swupdate.openvpn.net/community/releases/openvpn-2.4.1.tar.gz
Simdi arsiv dosyasini acalim ve iceri girelim. ^_^
$ tar zxvf openvpn-2.4.1.tar.gz
$ cd openvpn-2.4.1
Artik OpenBSD'nin port sisteminde ki OpenVPN yamalarini uygulayabiliriz.
$OpenBSD: patch-src_openvpn_route_c,v 1.8 2017/03/28 22:16:37 jca Exp $

- add support for on-link routes

--- src/openvpn/route.c.orig Wed Mar 22 16:34:21 2017
+++ src/openvpn/route.c Mon Mar 27 06:01:57 2017
@ add_route(struct route_ipv4 *r,
}
#endif

- argv_printf_cat(&argv, "-net %s %s -netmask %s",
+ argv_printf_cat (&argv, "-net %s -netmask %s",
network,
- gateway,
netmask);

- /* FIXME -- add on-link support for OpenBSD/NetBSD */
+ /* FIXME -- add on-link support for NetBSD */
+#ifdef TARGET_OPENBSD
+ if (is_on_link (is_local_route, flags, rgi))
+ argv_printf_cat (&argv, "-link -iface %s", rgi->iface);
+ else
+#endif
+ argv_printf_cat (&argv, "%s", gateway);

argv_msg(D_ROUTE, &argv);
status = openvpn_execve_check(&argv, es, 0, "ERROR: OpenBSD/NetBSD route add command failed")

$OpenBSD: patch-src_openvpn_syshead_h,v 1.3 2017/02/16 21:16:55 kurt Exp $
--- src/openvpn/syshead.h.orig Wed Feb 15 11:34:39 2017
+++ src/openvpn/syshead.h Wed Feb 15 11:35:49 2017

#include <netinet/ip.h>
#endif

+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+
#ifdef HAVE_NET_IF_TUN_H
#include <net/if_tun.h>
#endif

$OpenBSD: patch-src_openvpn_tun_c,v 1.13 2017/04/16 20:14:17 stsp Exp $

- no need for link0 any more, we have separate tap interfaces
- fix bus error in write_tun_header() due to misaligned access

--- src/openvpn/tun.c.orig Wed Mar 22 16:34:21 2017
+++ src/openvpn/tun.c Sun Apr 16 17:36:51 2017
@ do_ifconfig(struct tuntap *tt,
if (tun)
{
argv_printf(&argv,
- "%s %s %s %s mtu %d netmask 255.255.255.255 up -link0",
+ "%s %s %s %s mtu %d netmask 255.255.255.255 up",
IFCONFIG_PATH,
actual,
ifconfig_local,
@ do_ifconfig(struct tuntap *tt,
{
remote_end = create_arbitrary_remote( tt );
argv_printf(&argv,
- "%s %s %s %s mtu %d netmask %s up -link0",
+ "%s %s %s %s mtu %d netmask %s up",
IFCONFIG_PATH,
actual,
ifconfig_local,
@ do_ifconfig(struct tuntap *tt,
}
else
{
+ /*
+ * OpenBSD has distinct tun and tap devices
+ * so we don't need the "link0" extra parameter to specify we want to do
+ * tunneling at the ethernet level
+ */
argv_printf(&argv,
- "%s %s %s netmask %s mtu %d broadcast %s link0",
+ "%s %s %s netmask %s mtu %d broadcast %s",
IFCONFIG_PATH,
actual,
ifconfig_local,
@ write_tun_header(struct tuntap *tt, uint8_t *buf, int
{
u_int32_t type;
struct iovec iv[2];
- struct ip *iph;
+ struct ip iph;

- iph = (struct ip *) buf;
+ memcpy(&iph, buf, sizeof(iph));

- if (iph->ip_v == 6)
+ if (iph.ip_v == 6)
{
type = htonl(AF_INET6);
}

Evet Yamalari da uyguladiktan sonra derleme islemine gecebiliriz. Burada, OpenVPN yazilimini kurmamizda ki amac,
sistemde ki OpenVPN yazilimin dosyalarini kullanan ama LibreSSL degil de OpenSSL ontamimli bir OpenVPN olmasi. OpenSSL'i
neden kurdugumuzu soylemeye gerek yok sanirim. ^_^
$ sudo pkg_add openvpn openssl
$ ./configure OPENSSL_LIBS="-L/usr/local/lib/eopenssl -lssl -lcrypto" \
OPENSSL_CFLAGS="-I/usr/local/include/eopenssl/" LDFLAGS="-L/usr/local/lib" \
--with-crypto-library=openssl CPPFLAGS="-I/usr/local/include"
$ make
$ sudo cp src/openvpn/openvpn /usr/local/bin/openvpn-openssl
Yukarida ki islemlerden sonra artik baglanmak istedigimiz VPN servisine uygun bir
betik yazabiliriz ve tunel kazmaya baslayabilirsiniz. En azindan ben boyle yapiyorum. ^_^
#!/usr/local/bin/bash
LD_LIBRARY_PATH='/usr/local/lib/eopenssl/' openvpn-openssl --config /usr/local/riseup/vpn.ovpn

Nice(Bu bilgigimiz TURKCE nice, Ingilizce de okusaniz ayni anlamda,"Guzel") OpenBSD yazilarin da gorusmek uzere. ^_^

Yorumlar

Yorum yapmak için Oturum Açın yada Kayıt Olun .