OpenVPN Infrastructure SOP

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(Update SOP with resolv.conf info and chmod before cloning private repo.)
Line 18: Line 18:
  
 
=== Create the keys ===
 
=== Create the keys ===
From puppet1 check out the private repo:
+
From puppet01 check out the private repo:
  
 
<pre>
 
<pre>
 +
chmod 700 ~
 +
# This is to ensure that the clone of the is not world-readable.  You can
 +
# chmod just the private repo and undo this after if you want.
 
git clone /git/private
 
git clone /git/private
chmod 700 private
 
 
cd private/vpn/openvpn
 
cd private/vpn/openvpn
 
</pre>
 
</pre>
Line 72: Line 74:
 
</pre>
 
</pre>
  
Wait for bastion and ns1/2 to get updated, then restart /sbin/service openvpn on the new machine.
+
Wait for bastion and ns01/02 to get updated, then restart /sbin/service openvpn on the new machine.
 +
 
 +
=== Update resolv.conf on the client ===
 +
To make sure traffic actually goes over the VPN, make sure the search line in /etc/resolv.conf looks like:
 +
<pre>
 +
search vpn.fedoraproject.org fedoraproject.org
 +
</pre>
 +
for external hosts and
 +
<pre>
 +
search phx2.fedoraproject.org vpn.fedoraproject.org fedoraproject.org
 +
</pre>
 +
for PHX2 hosts.
  
 
== TODO ==
 
== TODO ==

Revision as of 19:39, 12 February 2011

Infrastructure InfrastructureTeamN1.png
Shortcut:
ISOP:OPENVPN

OpenVPN is our server->server VPN solution. It is deployed in a routeless manner and uses puppet managed keys for authentication. All hosts should be given static IP's and a hostname.vpn.fedoraproject.org DNS address.

Contents

Contact Information

Owner: Fedora Infrastructure Team

Contact: #fedora-admin, sysadmin-main

Location: Phoenix

Servers: bastion (vpn.fedoraproject.org)

Purpose: Provides vpn solution for our infrastructure.

Add a new host

Create the keys

From puppet01 check out the private repo:

chmod 700 ~
# This is to ensure that the clone of the is not world-readable.  You can
# chmod just the private repo and undo this after if you want.
git clone /git/private
cd private/vpn/openvpn

Next prepare your environment and run the build-key script. This example is for host "proxy4.fedora.phx.redhat.com"

. ./vars
./build-key $FQDN
git add .
git commit -a
git push

Create Static IP

Giving static IP's out in openvpn is mostly painless. Take a look at other examples but each host gets a file and 2 IP's. Also make sure to restart puppet on bastion *before* pushing changes out to hour new node.

git clone /git/puppet
vi puppet/modules/openvpn/files/ccd/$FQDN

The file format should look like this:

ifconfig-push 192.168.1.314 192.168.0.314

Basically the first IP is the IP that is contactable over the vpn and should always take the format "192.168.1.x" and the PtPIP is the same ip on a different network: "192.168.0.x"

Commit and install:

git add .
git commit -m "What have you done?"
git push

Create DNS entry

After you have your static IP ready, just add the entry to DNS:

From your puppet checkout, run:

vi modules/bind/files/master/vpn.fedoraproject.org
git commit -m "What have you done?"
git push

Wait for bastion and ns01/02 to get updated, then restart /sbin/service openvpn on the new machine.

Update resolv.conf on the client

To make sure traffic actually goes over the VPN, make sure the search line in /etc/resolv.conf looks like:

search vpn.fedoraproject.org fedoraproject.org

for external hosts and

search phx2.fedoraproject.org vpn.fedoraproject.org fedoraproject.org

for PHX2 hosts.

TODO

Deploy an additional VPN server outside of PHX. OpenVPN does support failover automatically so if configured properly, when the primary VPN server goes down all hosts should connect to the next host in the list.