A script to setup an ubuntu host as a gateway and pptp VPN server 2

Supposed you have an ubuntu box that has eth0 connected to internet and eth1 connected to an internal network. The following script can be used to turn this host into a DNAT gateway and a pptp VPN server.


#!/bin/bash -x
echo "Run as root or sudo"
#
echo "1. copy files“
cp files/sysctl.conf /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1
cp files/rc.local /etc/rc.local

echo "2. install vpn server"
apt-get -y install pptpd
echo "localip 10.0.0.1" >> /etc/pptpd.conf
echo "remoteip 10.0.0.245-254" >> /etc/pptpd.conf
echo "ms-dns 8.8.8.8" >> /etc/ppp/pptpd-options
echo "ms-dns 8.8.4.4" >> /etc/ppp/pptpd-options
echo "openstack * vasabilab *" >> /etc/ppp/chap-secrets
service pptpd restart
#
echo "3. set NAT"
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --clamp-mss-to-pmtu
#

The file “files/sysctl.conf” is a modified version of the original “/etc/sysctl.conf” that I added “net.ipv4.ip_forward=1” (basically delete the # comment off). The “files/rc.local” contains the iptable rules for IP MASQUERADE. It will replace the “/etc/rc.local” file so that the iptable rules are applied every time the gateway is booted.

I also put their contents below.
files/sysctl.conf:

#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#
#kernel.domainname = example.com
# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3
##############################################################3
# Functions previously found in netbase
#
# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1
###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

files/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --clamp-mss-to-pmtu
exit 0

2 thoughts on “A script to setup an ubuntu host as a gateway and pptp VPN server

  1. Pingback: 1. สร้าง vbox VM สำหรับติดตั้ง OpenStack Newton: เครื่อง Gateway ← Science Cloud Community

  2. Pingback: การติดตั้ง OpenStack Mitaka ด้วย VirtualBox บน Notebook ที่มี Ram 8 GB (Part 1) ← Science Cloud Community

Leave a Reply