Pastāvīga tuneļa izveide ar OpenVPN
Uzstādīšana
Uz klienta un servera uzliek OpenVPN:
apt-get install openvpnUz servera izveido statisku šifrēšanas atslēgu:
openvpn --genkey --secret /etc/openvpn/static.key- Ar ftp vai kā savādāk šo atslēgas failu pārkopē arī uz klienta datora.
Lai failu varētu pārkopēt ar FTP, tam jānomaina īpašnieks, pretējā gadījumā parasts lietotājs to nevarēs nolasīt:
chown student:student static.keyLejuplādēto failu arī saglabā /etc/openvpn/static.key un uzliek īpašnieku atpakaļ uz root:
chown root:root static.key
Izveido servera konfigurācijas failu /etc/openvpn/server.cfg:
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.keyIzveido klienta konfigurācijas failu /etc/openvpn/client.cfg:
remote myremote.mydomain
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.keyJa uz servera vai klienta ir ugunssiena, pievieno papildu likumu, kas atļauj saņemt paketes no tuneļa interfeisa:
iptables -A INPUT -i tun0 -j ACCEPTPalaiž VPN procesu uz servera:
openvpn --config /etc/openvpn/server.cfgPalaiž VPN procesu uz klienta:
openvpn --config /etc/openvpn/client.cfg
Pieprasījumu pārsūtīšana uz tuneli
Uz servera ieslēdz portu pārsutīšanas režīmu (forwarding) un portu pārsūtīšanas likumu, kur a.b.c.d servera publiskā IP adrese:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
iptables -t nat -A OUTPUT --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80Uz klienta izveido jaunu IP likumu tabulu failā /etc/iproute2/rt_tables pirms iebūvēto tabulu saraksta pievieno rindu:
200 tunUz klienta pievieno jaunu likumu, un tun tabulā ieliek noklusēto maršrutu:
ip ru add from 10.8.0.2 table tun
ip ro add default via 10.8.0.2 table tun- Procesu nokauj apskatot ar ps -efa|grep openvpn un kill -9 PID kur PID ir procesa identifikators (2. kolonna)
Skripti
Konfigurācija
Konfigurācijas failiem pievieno papildus parametrus savienojuma saglabāšanai un procesa palaišanai fona režīmā. Servera konfigurācijas fails /etc/openvpn/server.cfg:
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret /etc/openvpn/static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
daemonklienta konfigurācijas fails /etc/openvpn/client.cfg:
remote myremote.mydomain
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret /etc/openvpn/static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
daemon
Palaišana un apturēšana
/home/bin/make_tunnel skripts, kas palaiž VPN procesu un nokonfigurē tīklu uz klienta:
#!/bin/sh
# Reset
/home/bin/delete_tunnel
# Make tunel and configure routing
openvpn --config /etc/openvpn/client.cfg
iptables -A INPUT -i tun0 -j ACCEPT
ip ru add from 10.8.0.2 table tun
ip ro add default via 10.8.0.2 table tun/home/bin/delete_tunnel skripts, kas aptur VPN procesu un novāc lieko tīkla konfigurāciju uz klienta:
#!/bin/sh
# Reset
killall openvpn
#iptables -F -t nat
ip ru del from 10.8.0.2 table tun
ip ro del default via 10.8.0.2 table tun/home/bin/make_tunnel skripts, kas palaiž VPN procesu un nokonfigurē tīklu uz servera:
#!/bin/sh
# Reset
/home/bin/delete_tunnel
# Make tunel and configure routing
openvpn --config /etc/openvpn/server.cfg
echo 1 > /proc/sys/net/ipv4/ip_forwardVar iekļaut arī IP pakešu pārsūtīšanu, kur a.b.c.d servera publiskā IP adrese:
iptables -t nat -A PREROUTING --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
iptables -t nat -A OUTPUT --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
/home/bin/delete_tunnel skripts, kas aptur VPN procesu un novāc lieko tīkla konfigurāciju uz servera:
#!/bin/sh
# Reset
killall openvpn
Inicializācijas skripts
/etc/init.d/custom-scripts, uz klienta un servera, kas nodrošina automātisku tuneļa izveidi, startējot sistēmas:
#!/bin/sh
#/etc/init.d/custom-scripts
#
# Some things that run always
touch /var/lock/custom-scripts
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script custom-scripts "
echo "make_tunnel..."
# enter your script path here, e.g. /home/bin/...
/home/bin/make_tunnel
;;
stop)
echo "Stopping script custom-scripts"
echo "delete_tunnel..."
/home/bin/delete_tunnel
;;
**)
echo "Usage: /etc/init.d/custom-scripts {start|stop}"
exit 1
;;
esac
exit 0- Pārējo skatīt Papildu inicializācijas skripti
Saites
- Shrew Soft VPN klienta programma
- http://openvpn.net/index.php/documentation/howto.html
- http://openvpn.net/index.php/documentation/miscellaneous/static-key-mini-howto.html
- http://iptables-tutorial.frozentux.net/iptables-tutorial.html
- https://www.comparitech.com/blog/vpn-privacy/build-linux-vpn-server/
Created by Valdis Vītoliņš on 2008-08-09 13:52
Last modified by Valdis Vītoliņš on 2021-04-13 14:30