Run Your Own VPN using Google Cloud & OpenVPN

Securing your connection to the internet is no longer something that is reserved for hobbyists who fit the paranoid, tin-foil hatted stereotype. Today, with the majority of our interactions involving some form of digital support, the opportunities for simple, pick-pocket level hacks that take advantage of unsuspecting victims are immeasurable.

While most services that individuals use are natively encrypted, its no longer necessary to see that user’s traffic in order to know what they’re doing. Simply knowing the destination of the traffic is enough to profile a target and increase the attack vector. If you know the target is going to facebook or twitter or similar platforms, its easy to find even more information.

On top of that, the websites we all visit today are selling our information to whomever asks for it. There are entire organizations dedicated to modeling our behavior online and identifying us as targets for all sorts of reasons. Those models could also be available to the highest bidder.

The reality is such that a number of companies are making a lot of money selling VPN services, currently for ~$100 per year. The value goes beyond security. Users are capable of masking or changing their geolocation, essentially deciding to enter the Internet from any location where the VPN service has a server.

I’m here to argue that VPN services are simple enough to setup nowadays, especially with the advent of cloud computing, that almost any level of hobbyist can do it. Especially if the hobbyist already has a presence on the internet.

Setting Up the Server

I chose Google Cloud to host my VPN server and have other things setup that make this overall process easier (like DNS and SSH), and there are a ton of articles that explain how to do this. The most important callout on Google Cloud is that the VM must be created with Port Forwarding enabled on the network interface. This option can’t be changed after the VM has been built. This took me a while to figure out and I owe my knowledge to the following article:

I used Ubuntu on my VM and followed this guide to set up OpenVPN as a server.

By the end of that article you should understand how OpenVPN authenticates its clients, how to generate a Certificate Authority and sign certificate requests to create new client keys.

My server.conf ended up looking like the following:

port 1194
proto udp
dev tun

ca skylaski/ca.crt
cert skylaski/skylaski.crt
key skylaski/skylaski.key  # This file should be kept secret
dh skylaski/dh.pem

topology subnet
ifconfig-pool-persist /var/log/openvpn/ipp.txt

client-config-dir ccd

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS"
push "dhcp-option DNS"

keepalive 10 120

tls-auth skylaski/ta.key 0 # This file is secret
max-clients 10

user nobody
group nogroup


status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 4

explicit-exit-notify 1

Setting Up the Client

The client will be unique to the device connecting to the VPN. Most of the value-add for VPN providers is their client. However, basic networking knowledge is all thats needed to get an OpenVPN client working. One thing that helps is to create a single ‘.ovpn’ file with all the authentication information inside that file.

On Android I used the official OpenVPN client and created my ‘.ovpn’ to look like the following…

dev tun
resolv-retry infinite
key-direction 1
verb 1
keepalive 10 120
port 1194
proto udp
remote-cert-tls server





These are some of the simplest configuration files I’ve ever seen in my life. I’ve tested this client configuration on the OpenVPN Client for Android AND Windows 10.

This is just one example. There are a number of ways to do this today and hosting in general is relatively inexpensive. DigitalOcean has a 1-click deploy option for an OpenVPN access server for relatively cheap as well.

Gentoo Laptop

Razer 15 mid-2019 Advanced :: RZ09-03017EM8

We’ve made it far enough. I’ve lost the ability to count the number of times I’ve installed Gentoo in the last month.

For some reason when I first began my journey down the Open Source Rabbit Hole, I started with Gentoo. I was obsessed at the idea of efficiency. Something about being able to make a decision at every step in the process of setting up a Gentoo system meant power to me. The idea that I could “tune” the code, pre-compilation to harmonize as much as possible with the tools I was working with, was important to me at the time. Harmony was and always will be important.

However, this was my personal harmony. Not exactly harmony with the rest of the internet which was standardizing and promoting mass adoption. That wasn’t a problem for me at that time either. During highschool from 2000-2005 the internet was still a very democratic place.

I digress…

Recently I required a new personal laptop. I had not owned one for some time. My 2 in 1 Asus Transformer had served its purpose getting me through school and I am still using an Intel NUC connected to my TV for everything else (watching hockey mostly).

We’re back and getting it on with a Razer 15 Mid-2019 Advanced.

It was a trip just getting my hands on this hardware.


In order to get the correct drivers for installing from scratch say;

I’d say setting up pro and moving about Windows 10 is a walk in the park these days. Had to install without internet, but that wasn’t a big deal with the link above.


Never skip the handbook:

Major props to the initial author of:

The kernel configuration alone is invaluable.

I had to perform the following to get a Gentoo Kernel I could load the proper Wireless drivers on.

Kernel (Gentoo-Sources)

I needed a Linux 5.x kernel to get the wireless to work

echo "sys-kernel/gentoo-sources ~amd64" >> /etc/portage/package.keywords/gentoo-sources

Once the kernel was setup with ‘iwlwifi’ I still had to force build the right driver from ‘sys-kernel/linux-firmware’.





Nvidia card is working. Offloading is still a bit messy, so I’m making the GPU run the display manager (lightdm) and desktop environment (cinnamon/fluxbox).

Learned a lot from here:

# /etc/X11/xorg.conf

Section "ServerLayout"
	Identifier     "Layout"
	Option		"AllowNVIDIAGPUScreens"
	Screen      0  "nvidia"
	Inactive	"intel"

Section "Device"
	Identifier	"intel"
	Driver		"modesetting"
	BusID		"PCI:0:2:0"
	Option		"DRI" "3"

Section "DRI"
	Group		"video"
	Mode		0666

Section "Extensions"
	Option "Composite" "Enable"
	Option "RENDER" "Enable"

Section "Screen"
	Identifier	"intel"
	Device		"intel"

Section "Device"
	Identifier	"nvidia"
	Driver		"nvidia"
	BusID		"PCI:1:0:0"

Section "Screen"
	Identifier	"nvidia"
	Device		"nvidia"
	Option		"AllowEmptyInitialConfiguration" "Yes"

Sound & Bluetooth

Followed the ALSA & Pulseaudio guides for sound.



Installed ‘pavucontrol’ for managing sound levels.

Using Bluez & Blueberry for Bluetooth.


Bluetooth Headset:

Gentoo Specifics:


# make.conf

USE="lm-sensors theora native-headset abi_x86_32 client networkmanager xkb dhcpcd bluetooth bluetooth-audio png jpeg ffmpeg gtk3 gtk introspection gnome-keyring pulseaudio elogind mount cairo python cups dbus opengl text ssl icu minizip inspector sqlite secure-delete postproc apng xorg udev X alsa"

COMMON_FLAGS="-march=core2 -O2 -pipe"

# NOTE: This stage was built with the bindist Use flag enabled

# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.

INPUT_DEVICES="libinput synaptics"


I am running elogind, which has forced me to mask a lot of packages with USE=”-consolekit”. So far this hasn’t been a problem, even though I also run consolekit for PulseAudio.

Additional Props:

Discord – Linux Blade:

The Tao of Internet Relay Chat

Found here:

 The Tao of Internet Relay Chat 
Something is formed by the electrons, born in the silent cable. Shaping and growing and ungrowing. It is there yet not there. It is the source of Internet Relay Chat. I do not know the name, thus I will call it the Tao of Internet Relay Chat.
If the Tao is great, then the IRC is running ceaselessly. If the IRC is great then the server is running without ever stoping. If the server is great then the client will always be the server. The luser is then pleased and there is Chat in the world.
The Tao of IRC squits far away and connects on returning.
The genetic potential of birth, a lot to know, yet unknown.
In the begining there was nothing.
Out of nothing the Tao gave birth to tolsun gave birth to OuluBox.
OuluBox gave birth to rmsg.
rmsg was not Tao, so MUT gave birth to IRC.
No one knows when IRC came into existance, the mighty master WiZ have it to be at the end of the eight month in the year of the Dragon.
Each channel has its purpose, however humble. Each channel is the Yin and Yang of IRC. Each channels has it's place within the IRC.
In the beginning there was only channel 0, thus channel 0 is the soil of IRC.
Channel 1 to channel 10 then was open as the sea. Channel 11 to 999 was the trees and forests of IRC. Channels above 999 should not be mentioned, and channels below 0 were unborn and contained many secrets.
This was not the right Tao, so IRC gave birth to +channels.
+channels had the yin and yang. Mode does not.
This was not the right Tao still, so IRC gave birth to #channels.
#channels have the yin and yang.
Only channel 0 is the right path to Tao, but avoid speaking on channel 0.
There was a great dispute among the Broom-Walkers of the Relay. Some of them wanted neither yin nor yang. Out of this Eris came into existance. Some of the Broom-Walkers then created Eris Free-net.
This was the right Tao.
Kind Gentle and Boring Net was another wrong path to the Tao of Internet Relay Chat.
Some time later there was a quantity of some lusers who wanted to be Broom-Walkers also. The Eris Free Broom-Walkers did not agree with them, thus a new IRC was born. This IRC is called the Undernet.
But this is not the right Tao, either.
There will always be disputes among the Broom-Walkers of Internet Relay Chat.
This is the very nature of the IRC.
Lusers that do not understand the Tao is always using the yang of Mode on their channels. Lusers that do understand the Tao are always using Ignore on their channels.
How could this not be so ?
The wise sage luser is told about the Chat and uses it. The luser is told about the IRC and is looking for it. The flock are told about the Tao and make a fool of the IRC.
If there was no laughter, there would be no Tao.
The master says: "Without the Tao of Internet Relay Chat, life becomes meaningless."
The Relay of the old time was mysterious and sacred. We can neither imagine its thoughts nor path; we are left but to describe.
The sage luser must be aware like a frog crossing the highway.
The great master Wumpus once dreamed that he was an automaton. When he awoke he exclaimed: "I don't know whether I am Wumpus dreaming that I am a client, or a client dreaming that I am Wumpus!"
So was the first Automata born.
The master Nap then said: "Any automata should not speak unless spoken to. Any automata shall only whisper when spoken to."

Many lusers have fallen into the clutches of ethernal damnation. They where not following the Tao.
There once was a luser who went to #BotSex. Each day he saw the automatons. The luser decided that he also would have such a automata. He asked another luser for his automata. The other luser gave his automata away.
The luser was not within the Tao, so he just started the automata. The automata had only Yang inside so all the lusers files where deleted.
Some moons laither the same luser then had become a sage luser, and did create his automata from the very grounds with materials found inside the IRC. The luser was now within the Tao and his automata lived happily ever after.
There once was a master who wrote automatons without the help of master Phone. A novice luser, seeking to imitate him, began with the help of master Phone. When the novice luser asked the master to evaluate his automata the master replied: "What is a working automata for the master is not for the luser. You must must BE the IRC before automating."
Master BigCheese gave birth to master Troy; his duty clear. Master Troy gave birth to master Phone, for the Tao of Irc must be eternal and must flow as the ceaseless river of Time itself.
Master Phone once said about the ircII client: "public_msg is for a message from someone NOT on the channel public_other is for a message on a channel that doesn't belong to a window. public is for a message on a channel that belongs to a window!"
Out of this raised the mighty chaos.
The sage luser came to the master who wrote automata without the help of master Phone. The sage luser asked the master who wrote automata: "Which is easiest to make. A automata with the help of master Phone or an automata made with the help of a language ?"
The master who wrote automata then replied: "With the help of a language."
The sage luser was disapointed and exclaimed: "But, with master Phone you do not need to know anything about the soil of IRC. Is not that the easiet way ?"
"Not really" said the master who wrote automata, "when using master Phone you are closed inside a box. For sure, it is a great box for the lusers, but the master will need more power, thus a language is the only path to go. With the language the master will never have to limit himself. When using such a language the master will seek the best between the need and the availibility."
"I see", said the sage luser.
This is the essence of Tao of IRC automatas.
A client should be light and be used for communication. The spirit of a good client is that it should be very convinient for the luser to use, but hard for the luser who want to create automata. There should never ever be too many functions or too few functions.
There should always be a ignore.
Without ignore the client is not within the Tao of Chating.
The client should always respond the luser with messages that will not astnonish him too much. The server likewise. If the server does not, then it is the clients job to explain what the server says.
A client which fails this, will be useless and cause confusion for the lusers. The only way to correct this is to use another client or to write a new one.
A luser asked the masters on #IrcHelp: "My client does not work". The masters replied: "Upgrade your client". The luser then wondered why the master knew. The master then told him about the Protocol.
"Your client does not work beaucse it does not understand the server. Why should it always work ? Only a fool would expect such. But, clients are made by humans, and humans are not perfect. Only Tao is.

The luser came to the masters of #IrcHelp, asking about the Tao of IRC within the client. The masters then said that the Tao of IRC always lies inside the client regardless of how the client connects to the server.

The master then was quiet for a long time and said. "Please leave, such questions are not within the Tao of IRC".
The master says: "Without the Protocol of TCP the messages will not travel. Without the client, the server is useless."
There once was a luser who used the ircII client. "ircII can do anything I ever need for using IRC" said the emacs client user, "I have /ON's, I have assignments, I have aliasing. Why don't you use this instead of the huge emacs client, which also has a messy screen?" The emacs client user then replied by saying that "it is better to have a scripting language that is the client instead of have a client that has a scripting language." Upon hearing this, the ircII client luser fell silent.
The master Wumpus said: "Time for you to leave. I did, now I'm happy." The master Gnarfer replied: "Use, but never overuse IRC, then you will also be happy within IRC"
A luser came unto the masters of #EU-Opers and asked, "How can I be, yet not be, a [email protected] within the IRC?" The masters of #EU-Opers replied: "To be Tao is to be ones true self. To hide ones self is not Tao, and is not IRC, you have much to learn before you shall be at rest within the Flow of Irc. Please leave"
Ove Ruben R Olsen 

The Hacker’s Manifesto

Found here:

                               ==Phrack Inc.==

                    Volume One, Issue 7, Phile 3 of 10

The following was written shortly after my arrest...

                       \/\The Conscience of a Hacker/\/


                               +++The Mentor+++

                          Written on January 8, 1986

        Another one got caught today, it's all over the papers.  "Teenager
Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"...
        Damn kids.  They're all alike.

        But did you, in your three-piece psychology and 1950's technobrain,
ever take a look behind the eyes of the hacker?  Did you ever wonder what
made him tick, what forces shaped him, what may have molded him?
        I am a hacker, enter my world...
        Mine is a world that begins with school... I'm smarter than most of
the other kids, this crap they teach us bores me...
        Damn underachiever.  They're all alike.

        I'm in junior high or high school.  I've listened to teachers explain
for the fifteenth time how to reduce a fraction.  I understand it.  "No, Ms.
Smith, I didn't show my work.  I did it in my head..."
        Damn kid.  Probably copied it.  They're all alike.

        I made a discovery today.  I found a computer.  Wait a second, this is
cool.  It does what I want it to.  If it makes a mistake, it's because I
screwed it up.  Not because it doesn't like me...
                Or feels threatened by me...
                Or thinks I'm a smart ass...
                Or doesn't like teaching and shouldn't be here...
        Damn kid.  All he does is play games.  They're all alike.

        And then it happened... a door opened to a world... rushing through
the phone line like heroin through an addict's veins, an electronic pulse is
sent out, a refuge from the day-to-day incompetencies is sought... a board is
        "This is it... this is where I belong..."
        I know everyone here... even if I've never met them, never talked to
them, may never hear from them again... I know you all...
        Damn kid.  Tying up the phone line again.  They're all alike...

        You bet your ass we're all alike... we've been spoon-fed baby food at
school when we hungered for steak... the bits of meat that you did let slip
through were pre-chewed and tasteless.  We've been dominated by sadists, or
ignored by the apathetic.  The few that had something to teach found us will-
ing pupils, but those few are like drops of water in the desert.

        This is our world now... the world of the electron and the switch, the
beauty of the baud.  We make use of a service already existing without paying
for what could be dirt-cheap if it wasn't run by profiteering gluttons, and
you call us criminals.  We explore... and you call us criminals.  We seek
after knowledge... and you call us criminals.  We exist without skin color,
without nationality, without religious bias... and you call us criminals.
You build atomic bombs, you wage wars, you murder, cheat, and lie to us
and try to make us believe it's for our own good, yet we're the criminals.

        Yes, I am a criminal.  My crime is that of curiosity.  My crime is
that of judging people by what they say and think, not what they look like.
My crime is that of outsmarting you, something that you will never forgive me

        I am a hacker, and this is my manifesto.  You may stop this individual,
but you can't stop us all... after all, we're all alike.

                               +++The Mentor+++