Запомняне

» Здравейте
[ Вход :: Регистриране ]
 » Начало » Li Форуми » Help & Support » Servers & Services » Open VPN & IP Tables
Тема: Open VPN & IP Tables, 2.6.18-1.2798.fc6
Мнение #1 Skip to the next post in this topic.
Написано на: Август 22 2010, 09:59

Avatar




Група: Li fans
Мнения: 30
Регистриран: Август 2006

Оценка: няма

Offline
Здравейте пичове,

вчера инсталирах OpenVPN на сървър Fedora 6, kernel 2.6.18-1.2798.fc6.
Целта ми е да свържа външен компютър (PC3) с компютър от вътрешната мрежа, който е зад допълнителен рутер. OpenVPN е инсталиран с tun0, без Ethernet bridging. Рутерите зад сървъра са обикновени рутери (не са VPN). (виж картинката)
Бихте ли дали идея как трябва да настроя server.conf и по-специално директивата server.
Трябва ли да настройвам допълнителните директиви client-config-dir ccd и route?

Вторият ми въпрос е как компютър PC да има достъп до компютър зад рутера, т.е. до компютър PC2? Предполагам, че тук ще става дума за iptables?

Server - internal LAN 10.0.0.0/24, routers - WAN = 10.0.0.10, 10.0.0.200; LAN 192.168.2.0/24



Uploaded with ImageShack.us
Предварително ви благодаря за съдействието,
:12;

Never sigh for better world
It's already composed, played and told
Контакти:  sleepwalker
WEB  
Мнение #2 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 22 2010, 12:19

No avatar chosen




Група: Li gurus
Мнения: 1489
Регистриран: Април 2005

Оценка: 5

Offline
vpn сървърът координира връзката м/у клиентите - за да стане това което искаш vpn сървърът (конфигурацията) трябва да позволява връзка клиент-клиент така ще получиш точно това което желаеш PC3 ще има достъп до PC2 без да се натоварва сървърът (който само ще координира - е ако има възможност да се ползва друго трасе де) - същата постановка може да се ползва за PC - PC2 (като съответно ще имаш връзка и PC - PC3) ако това не те устройва (не желаеш PC да има достъп до vpn-а) трябва да зададеш статичен маршрут към мрежа 192.168.2.0 (или към конкретен хост в нея) в таблицата с маршрутите на сървърът (така ще е видимо за цялата мрежа) или само в тази на PC (маршрутът трябва да описва router1 като gateway и съответно router1 трябва да рутира заявката - като можеш да си избереш дали само да я рутира или да я "маскира")

за опциите на vpn сървърът трябва да прегледаш документацията защото може да те подведа
Контакти:  mcwolf

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #3 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 23 2010, 10:06

Avatar




Група: Li fans
Мнения: 763
Регистриран: Февруари 2008

Оценка: 5

Offline
Quote: 

#VPN Port                              
port 1194                              

#Local address
local 10.56.88.3  IP адреса на външния интерфейс на рутера (бе значение той зад колко рутера е, дали е реален или не!)

#Protocol
proto udp

#Ethernet routing (like I stated above I picked routing over bridging)
dev tun (tun0 под линукс)                                                              
persist-tun

#Key location
ca keys/ca.crt
cert keys/server.crt
key keys/server.key #secret file

# Diffie hellman parameters. (This is the cryptography)
dh keys/dh1024.pem

#VPN DHCP Pool
server 1.2.1.0 255.255.255.0 (това са ти адресите които раздаваш на клиентите динамично)

ifconfig-pool-persist ipleases.txt (ако ще набиваш статични адреси на всеки клиент имаш 2 варианта, този файл или ccd папката, с отделен файл за всеки клиент, където името на файла е CN името от сертификата на файла)

push "route 101.0.0.0 255.255.255.0" (тук казваш на клиентите пътища до вътрешната мрежа в случай, че не подменяш default route-а им)

client-to-client

#keepalive
keepalive 10 120

#more cryptographic cipher options
cipher AES-128-CBC

#compression
comp-lzo

#openvpn priv after init.
user openvpn
group openvpn

#persist-key
#persist-tun

#This is the status log file for openvpn
status openvpn-status.log

log /var/log/openvpn.log

verb 3

mute 20

daemon


всеки клиент ще се регистрира с адрес в диапазона, който си указал в server директивата или в статичния файл/папка.
ако федората ти е default route на PC2, той ще може да достъпва клиента ти PC3 по адреса, който PC3 си е взел от openvpn. важи и за двете посоки на комуникация.
ако искаш да се достъпват по имена (windows машини), тогава ти трябва bridge

давам ти и готов скрипт за генериране на клиенти. може да се наложи да създадеш малко папки. по принцип съм го правил да работи под openvpn и pf, но трябва да работи под linux без проблем
Code Sample: 

#!/bin/bash
#
#       Purpose: Automdate creation of new openvpn clients
#
#
#
#
# lod@lordofdeath.net   License: GPLv3
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

#vars
ovpn_cfg_dir="/etc/openvpn"
ovpn_key_dir="/etc/openvpn/keys"
ovpn_keygen_dir="/etc/openvpn/easy-rsa/2.0"
cache_dir="/var/cache/addovpn"
group_file="${cache_dir}/group.lst"
group_range_prefix="${cache_dir}/netprefix"
static_ip_file="/etc/openvpn/ipleases.txt"
zip_cache_files="${cache_dir}/zip_cache"
time_stamp="`date +%s`"
zip_output_repo="${cache_dir}/zip_out_repo"
###################################################
#check sequence
INIT_CHECK_0 () {
       #check for dirs
       if [ ! -e "$ovpn_cfg_dir" ]; then
               echo "$ovpn_cfg_dir is missing or wrong.."
               exit 200
       fi

       if [ ! -e "$ovpn_key_dir" ]; then
               echo "$ovpn_key_dir is missing or wrong.."
               exit 201
       fi
       if [ ! -e "$ovpn_keygen_dir" ]; then
               echo "$ovpn_keygen_dir is missing or wrong.."
               exit 202
       fi

}

INIT_CHECK_1 () {
       if [ ! -e "$cache_dir" ]; then
               mkdir -p $cache_dir
               chmod 0770 $cache_dir
               chown root:wheel $cache_dir
               echo "Done creating $cache_dir, now fill it with files and run ****** again..."
               exit 199
       fi
       if [ ! -e "$group_file" ]; then
               echo "$group_file is missing or wrong.."
               exit 203
       fi
       if [ ! -e "$group_range_prefix" ]; then
               echo "$group_range_prefix is missing or wrong.."
               exit 204
       fi
       if [ ! -e "$zip_cache_files" ]; then
               echo "Please create $zip_cache_files and put binary data or edit ****** with more apropriate value.."
               exit 205
       fi
       if [ ! -e "$zip_output_repo" ]; then
               mkdir -p $zip_output_repo
               chmod 0770 $zip_output_repo
               chown root:wheel $zip_output_repo
       fi

}

INIT_CHECK_2 () {
       if [ ! -e "$cache_dir" ]; then
               mkdir -p $cache_dir
               chmod 0770 $cache_dir
               chown root:wheel $cache_dir
               echo "Done creating $cache_dir, now fill it with files and run ****** again..."
               exit 199
       fi

}

INIT_CHECK_3 () {
       if [ ! -e "$cache_dir" ]; then
               mkdir -p $cache_dir
               chmod 0770 $cache_dir
               chown root:wheel $cache_dir
               echo "Done creating $cache_dir, now fill it with files and run ****** again..."
               exit 199
       fi

       if [ ! -e "$group_file" ]; then
               echo "$group_file is missing or wrong.."
               exit 203
       fi

       if [ ! -e "$zip_cache_files" ]; then
               echo "Please create $zip_cache_files and put binary data or edit ****** with more apropriate value.."
               exit 205
       fi

       if [ ! -e "$zip_output_repo" ]; then
               mkdir -p $zip_output_repo
               chmod 0770 $zip_output_repo
               chown root:wheel $zip_output_repo
       fi

}

#reload server
RELOAD () {
/etc/init.d/openvpn restart
}

#create new client
CREATE_CLIENT () {
       INIT_CHECK_1

       #read client name
       EXSTNG_CLNTS="`cat $static_ip_file | cut -d',' -f1`"
       echo $EXSTNG_CLNTS
       CLNT_NAME=""
       until [ "$CLNT_NAME" ]; do
               echo -n "Enter new client name:"
               read CLNT_NAME
       done
       
       if [ "`ls $ovpn_key_dir/$CLNT_NAME* 2>/dev/null`" ]; then
               echo "Key with that client name exist, Use \"modify\" switch"
               exit 210
       fi
       
       #read e-mail address
       CLNT_EMAIL=""
       echo "Enter clients e-mail address to which the key will be send,
       if none the key will not be send and placed in $zip_output_repo:"
       read CLNT_EMAIL

       #read group membership  
       GRP_NAME=""
       until [ "$GRP_NAME" ] && [ "`cat $group_file | grep -i $GRP_NAME`" ]; do
               echo "Build in groups are:"
               cat $group_file
               echo -n "Enter group for the new user:"
               read GRP_NAME
       done

       #gen client key
       cd $ovpn_keygen_dir
       source ./vars
       ./build-key $CLNT_NAME
       ./build-dh

       #assign static ip lease
       GRP_PREFIX=`cat $group_range_prefix/$GRP_NAME.netprefix`
       GRP_LST_IP=`cat $group_range_prefix/$GRP_NAME.lastip`
       CLNT_STAT_IP=$GRP_PREFIX.$GRP_LST_IP
       echo -n "adding $CLNT_STAT_IP to $static_ip_file"
       echo -e "${CLNT_NAME},${CLNT_STAT_IP}\n" >> $static_ip_file
       cat $static_ip_file
       /etc/init.d/openvpn restart
       let GRP_LST_IP+=4
       echo "New group last IP is: $GRP_LST_IP"
       echo $GRP_LST_IP > $group_range_prefix/$GRP_NAME.lastip

       #package all files in zip
       TMP_DIR="/tmp/$time_stamp"
       mkdir $TMP_DIR
       cp $zip_cache_files/* $TMP_DIR/
       cp $ovpn_key_dir/ca.crt  $TMP_DIR/ca.crt
       cp $ovpn_key_dir/$CLNT_NAME.crt $TMP_DIR/client.crt
       cp $ovpn_key_dir/$CLNT_NAME.key $TMP_DIR/client.key
       cd $TMP_DIR
       ZIP_FILE_NAME="${CLNT_NAME}_ovpn.zip"
       `which zip` $ZIP_FILE_NAME *
       
       #e-mail zip or archive in repo
       if [ "$CLNT_EMAIL" ]; then
               EMAIL=sisadmin@sistechnology.com
               REPLYTO=sisadmin@sistechnology.com
               cat $zip_cache_files/README | \
               mutt -s "VPN Setup Files" -a $TMP_DIR/$ZIP_FILE_NAME -- $CLNT_EMAIL
               if [ "$?" == "0" ]; then
                       rm -r $TMP_DIR
               fi
       else    
               cp $TMP_DIR/$ZIP_FILE_NAME $zip_output_repo/
               if [ "$?" == "0" ]; then
                       rm -r $TMP_DIR
               fi
       fi
       
}
CREATE_GROUP () {
       INIT_CHECK_2
       #show any existing group
       if [ -e "group_file" ]; then
               echo "Existing groups are:"
               cat $group_file | awk '{print$1}'
       fi

       #read new group name
       GRP_NAME=""
       until [ "$GRP_NAME" ] && [ ! "`cat $group_file | grep -i $GRP_NAME 2>&1`" ]; do
               echo -n "Enter the New GRUP name:"
               read GRP_NAME
       done
       
       #read new group netprefix
       GRP_PREFIX=""
       echo "Taken prefixes are:"
       echo "Valid prefixes are: \"A.B.C\". If you fuckup here all the work is shity!"
       cat $group_range_prefix/*.netprefix
       until [ "$GRP_PREFIX" ] && [ ! "`cat $group_range_prefix/*.netprefix | grep -i $GRP_PREFIX 2>&1`" ]; do
               echo -n "Enter the New GRUP name:"
               read GRP_PREFIX
       done
       echo $GRP_PREFIX >> $group_range_prefix/$GRP_NAME.netprefix
       echo "Don't forget to edit your firewall to ajust the changes..!"
       echo $GRP_NAME $GRP_PREFIX >> $group_file
       
       #set initial group last ip
       echo -n "Setup custom initial IP? Valid IPs are [1-254]/4. Default is \"1\"?:"
       read RESPONSE
       if [ "$RESPONSE" ]; then
               echo "$RESPONSE" > $group_range_prefix/$GRP_NAME.lastip
       else
               echo "1" > $group_range_prefix/$GRP_NAME.lastip
       fi
}

MOD_CLIENT () {
       INIT_CHECK_3

       GET_CLNT_NAME () {
               #client's name
               CLNT_NAME=""
               echo "Existing clients are:"
               EXSTNG_CLNTS="`cat $static_ip_file | cut -d',' -f1`"
               echo $EXSTNG_CLNTS
               RESPONSE=""
               until [ "$RESPONSE" ]  && [ "`echo $EXSTNG_CLNTS | grep -i $RESPONSE`" ]; do
                       echo -n "Enter client's name to modify:"
                       read RESPONSE
               done
               CLNT_NAME=$RESPONSE
               export CLNT_NAME
       }
               
       MOD_CLNT_IP () {
               #modify client's ip address
               GET_CLNT_NAME

               #client's ip
               echo -n "Current client IP is:"
               echo `cat $static_ip_file | grep $CLNT_NAME | cut -d',' -f2`
               echo -e "\n\n\n PLEASE BE CAREFULL, NO IP CHECKS WILL BE RUN, IF YOU MESS UP, ALL WORK WILL BE SHITY.."
               echo -n "Enter client's new IP (Note that last notation must end on number that can div 8):"
               read CLNT_IP_ADDR
               TMP_FILE_DUMP=/tmp/$time_stamp
               cat $static_ip_file | sed -e "s/^$CLNT_NAME.*/$CLNT_NAME,$CLNT_IP_ADDR/" > $TMP_FILE_DUMP
               mv $TMP_FILE_DUMP $static_ip_file
               GRP_PREFIX="`echo $CLNT_IP_ADDR | awk -F'.' '{print$1.$2.$3}'`"
               CLNT_LST_IP="`echo $CLNT_IP_ADDR | awk -F'.' '{print$4}'`"
               GRP_NAME="`grep $GRP_PREFIX $group_file | awk '{print$2}'`"
               if [ "`cat $group_range_prefix/$GRP_NAME.lastip`" -le "$CLNT_LST_IP" ]; then
                       let CLNT_PREFIX+=8
                       echo $CLNT_PREFIX > $group_range_prefix/$GRP_NAME.lastip
               fi
               
       }
       
       MOD_CLNT_CERT () {
               #modify client's certificate
               REVOKE_CLNT_CRT () {
                       GET_CLNT_NAME

                       cd $ovpn_keygen_dir
                       source ./vars
                       ./revoke-full $CLNT_NAME
                       mv $ovpn_key_dir/$CLNT_NAME.* $ovpn_key_dir/revoked/
               }
               RENEW_CLNT_CRT () {
                       GET_CLNT_NAME

                       source ./vars
                       ./build-key $CLNT_NAME
                       ./build-dh
                       TMP_DIR="/tmp/$time_stamp"
                       mkdir $TMP_DIR
                       cp $ovpn_key_dir/ca.crt  $TMP_DIR/ca.crt
                       cp $ovpn_key_dir/$CLNT_NAME.crt $TMP_DIR/client.crt
                       cp $ovpn_key_dir/$CLNT_NAME.key $TMP_DIR/client.key
                       cd $TMP_DIR
                       ZIP_FILE_NAME="${CLNT_NAME}_ovpn.zip"
                       `which zip` $ZIP_FILE_NAME *

                        #read e-mail address
                       CLNT_EMAIL=""
                       echo -n "Enter clients e-mail address to which the key will be send,
                       if none the key will not be send and placed in $zip_output_repo:"
                       read CLNT_EMAIL

                       #e-mail zip or archive in repo
                       if [ "$CLNT_EMAIL" ]; then
                               cat $zip_cache_files/README | \
                               mutt -s "VPN Setup Files" -a $TMP_DIR/$ZIP_FILE_NAME $CLNT_EMAIL
                               if [ "$?" == "0" ]; then
                                       rm -r $TMP_DIR
                               fi
                       else
                               cp $TMP_DIR/$ZIP_FILE_NAME $zip_output_repo/
                               if [ "$?" == "0" ]; then
                                       rm -r $TMP_DIR
                               fi
                       fi
               }
       clear
       echo -n "I will revoke then renew client's cert, continue?[Yes/No]"
       read RESPONSE
       case $RESPONSE in
               Yes|yes|y|Y)
                       REVOKE_CLNT_CRT
                       RENEW_CLNT_CRT
               ;;
       esac
       }
       clear
       echo -n "Modify client's cert, ip or both [cert|ip|both]:"
       read RESPONSE
       case $RESPONSE in
               name)
               MOD_CLNT_CERT
               ;;
               ip)
               MOD_CLNT_IP
               ;;
               both)
               echo "Be warn! Shity things can hapen.."
               MOD_CLNT_CERT
               MOD_CLNT_IP
               ;;
       esac
       RELOAD
       INIT
}
MOD_GROUP () {
       INIT_CHECK_3

       GET_GRP_NAME () {
               #group's name
               echo "Existing groups are:"
               EXSTNG_GRPS="`cat $group_file | awk '{print$1}'`"
               echo $EXSTNG_GRPS
               RESPONSE=""
               until [ "$RESPONSE" ]  && [ "`echo $EXSTNG_GRPS | grep -i $RESPONSE`" ]; do
                       echo -n "Enter group's name to modify:"
                       read RESPONSE
               done
               GRP_NAME=$RESPONSE
               export GRP_NAME
       }
       
       MOD_GRP_NAME () {
               #change group's name
               GET_GRP_NAME
               echo "No checks will be performed, DON'T MESS UP OR THE WORK WILL BE SHITY"
               echo -n "Enter group's new name:"
               read GRP_NEW_NAME
               TMP_FILE_DUMP=/tmp/$time_stamp
               cat $group_file | sed -e "s/^$GRP_NAME/$GRP_NEW_NAME/" > $TMP_FILE_DUMP
               mv $TMP_FILE_DUMP $group_file
               mv $group_range_prefix/$GRP_NAME.netprefix $group_range_prefix/$GRP_NEW_NAME.netprefix
       }
       
       MOD_GRP_PREFIX () {
               #change group's prefix
               GET_GRP_NAME
               GRP_PREFIX="`cat $group_range_prefix/$GRP_NAME.netprefix`"
               echo "No checks will be performed, IF YOU MESS UP THE WORK WILL BE SHITY"
               echo "Current $GRP_NAME prefix is: $GRP_PREFIX"
               echo -n "Enter group's new prefix [Syntax: A.B.C]:"
               read GRP_NEW_PREFIX
               TMP_FILE_DUMP=/tmp/$time_stamp
               cat $group_file | sed -e "s/$GRP_PREFIX$/$GRP_NEW_PREFIX/" > $TMP_FILE_DUMP
               mv $TMP_FILE_DUMP $group_file
               echo $GRP_NEW_PREFIX > $group_range_prefix/$GRP_NAME.netprefix
       }
       MOD_GRP_LST_IP () {
               GET_GRP_NAME
               echo "No checks will be performed, IF YOU MESS UP THE WORK WILL BE SHITY"
               GRP_LST_IP="`cat $group_range_prefix/$GRP_NAME.lastip`"
               echo "Current $GRP_NAME last ip is: $GRP_LST_IP"
               echo -n "Enter group's new last ip [May not be prime number]:"
               read GRP_NEW_LST_IP
               echo $GRP_NEW_LST_IP > $group_range_prefix/$GRP_NAME.lastip
       }

       clear
       echo "Be warn! Shity things can hapen.."
       echo -n "Modify group's name, prefix or lastip [name|prefix|lastip]:"
       read RESPONSE
       case $RESPONSE in
               name)
               MOD_GRP_NAME
               ;;
               ip)
               MOD_GRP_PREFIX
               ;;
               lastip)
               MOD_GRP_LST_IP
               ;;
       esac
RELOAD
INIT
}
DEL_GROUP () {
       INIT_CHECK_3

       GET_GRP_NAME () {
               #group's name
               echo "DELETING GROUP WITH VALID USERS WILL CAUSE DELETION OF ALL GROUP'S USERS!!!!!"
               echo -e "Be warn, all work may end being shity..\n\n\n"
               echo "Existing groups are:"
               EXSTNG_GRPS="`cat $group_file | awk '{print$1}'`"
               echo $EXSTNG_GRPS
               RESPONSE=""
               until [ "$RESPONSE" ]  && [ "`echo $EXSTNG_GRPS | grep -i $RESPONSE`" ]; do
                       echo -n "Enter group's name to delete:"
                       read RESPONSE
               done
               GRP_NAME=$RESPONSE
               export GRP_NAME
       }
       clear
       GET_GRP_NAME
       
       #delete group
       echo -n "Are you shure?[Yes|No]:"
       read RESPONSE
       case $RESPONSE in
               Y|yes|Yes|YES)
               GRP_PREFIX="`cat $group_range_prefix/$GRP_NAME.netprefix`"
               for DEL_USR in `grep $GRP_PREFIX $static_ip_file`; do
                       cd $ovpn_keygen_dir
                       source ./vars
                       ./revoke-full $CLNT_NAME        
                       mv $ovpn_key_dir/$CLNT_NAME.* $ovpn_key_dir/revoked/
                       TMP_FILE_DUMP=/tmp/$time_stamp
                       cat $static_ip_file | sed -e "/^$CLNT_NAME.*/d" > $TMP_FILE_DUMP
                       mv $TMP_FILE_DUMP $static_ip_file
               done
               rm $group_range_prefix/$GRP_NAME.lastip
               rm $group_range_prefix/$GRP_NAME.netprefix
               TMP_FILE_DUMP=/tmp/$time_stamp
               cat $group_file | sed -e "/^$GRP_NAME.*/d" > $TMP_FILE_DUMP
               mv $TMP_FILE_DUMP $group_file
               ;;
               *)
               exit 225
               ;;
       esac
RELOAD
INIT
}

DEL_CLIENT () {
       INIT_CHECK_3
       GET_CLNT_NAME () {
               #client's name
               CLNT_NAME=""
               echo "Existing clients are:"
               EXSTNG_CLNTS="`cat $static_ip_file | cut -d',' -f1`"
               echo $EXSTNG_CLNTS
               RESPONSE=""
               until [ "$RESPONSE" ]  && [ "`echo $EXSTNG_CLNTS | grep -i $RESPONSE`" ]; do
                       echo -n "Enter client's name to delete:"
                       read RESPONSE
               done
               CLNT_NAME=$RESPONSE
               export CLNT_NAME
       }
       clear
       echo -e "BE WARN, YOU HANDS MAY END IN SHITY BUSSINES!!!\n\n\n"
       echo "After client's deletion, groups last ip will not be affected.."
       GET_CLNT_NAME
       
       #delete client
       echo -n "Are you shure?[Yes|No]:"
       read RESPONSE
       case $RESPONSE in
               Y|yes|Yes|YES)
               cd $ovpn_keygen_dir
               source ./vars
               ./revoke-full $CLNT_NAME        
               mv $ovpn_key_dir/$CLNT_NAME.* $ovpn_key_dir/revoked/
               TMP_FILE_DUMP=/tmp/$time_stamp
               cat $static_ip_file | sed -e "/^$CLNT_NAME.*/d" > $TMP_FILE_DUMP
               mv $TMP_FILE_DUMP $static_ip_file
               ;;
               *)
               exit 225
               ;;
       esac
RELOAD
INIT
}
INIT () {
       #start ******
       echo "This ****** can create/modify/delete openvpn users/groups"
       echo -n "Step 1: Chose action [create|modify|delete|exit]:"
       read RESPONSE

       #init action
       case $RESPONSE in
               create)
                       clear
                       echo "Step 2: Create client or group [client|group|exit]:"
                       read RESPONSE
                               case $RESPONSE in
                                       client)
                                               CREATE_CLIENT
                                       ;;
                                       group)
                                               CREATE_GROUP
                                       ;;
                                       *|exit)
                                       echo "Terminating.."
                                       exit 211
                               esac
               ;;
               modify)
                       clear
                       echo "Step 2: Modify client or group [client|group|exit]:"
                       read RESPONSE
                               case $RESPONSE in
                                       client)
                                               MOD_CLIENT
                                       ;;
                                       group)
                                               MOD_GROUP
                                       ;;
                                       *|exit)
                                       echo "Terminating.."
                                       exit 212
                               esac
               ;;
               delete)
                       echo "Step 2: Delete client or group [client|group]:"
                       read RESPONSE
                               case $RESPONSE in
                                       client)
                                               DEL_CLIENT
                                       ;;
                                       group)
                                               DEL_GROUP
                                       ;;
                                       *|exit)
                                       echo "Terminating.."
                                       exit 215
                               esac
               ;;
               exit)
                       echo "bye.."
               ;;
       esac
}

INIT_CHECK_0
INIT


Контакти:  altoas

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Мнение #4 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 23 2010, 10:11

Avatar




Група: Li fans
Мнения: 763
Регистриран: Февруари 2008

Оценка: 5

Offline
за самият скрипт трябва малко разяснения, замисъла му като цяло е да генерира ключовете за клиента, да го добави в група за достъп (групите се ограничават през pf по ip, т.е. всяка друпа е отделна малка мрежа 1.0.0.0/24, 1.0.1.0/24)
и да му изпрати по email zip файл с ключовете за достъп, конфигурационния му файл, файл с указание къде да ги копира и rar файл с инсталатора на openvpn (за да не се филтрира exe-то през пощенските сървъри).
клиента инсталира програмата, копира файловете в папка config и е готов.

скрипта има и автоматизиран процес на създаване на групи, изтриване на групи, изтриване на клиенти и revoke на ключовете им

Контакти:  altoas

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Мнение #5 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 24 2010, 10:59

Avatar




Група: Li fans
Мнения: 30
Регистриран: Август 2006

Оценка: няма

Offline
Здравейте,

благодаря ви за отговорите!

Altoas: не разбирам следното:
push "route 101.0.0.0 255.255.255.0" (тук казваш на клиентите пътища до вътрешната мрежа в случай, че не подменяш default route-а им)

В server.conf директивата server е настроена така:
server 172.16.0.0 255.255.255.0

Вчера пробвах следния сценарий:
и PC и PC2 фактически ми се намират зад допълнителни WiFi рутерчета, които имат за WAN адреси 10.0.0.2 и 10.0.0.222 ( LAN адрес на Fedora-та е 10.0.0.1 и той е зададен като Default gateway на двата WiFi рутера, зад които има 2 мрежи клиенти, към които принадлежат PC и PC2). LAN мрежата на рутер 10.0.0.2 е 10.55.55.0/24, а на 10.0.0.222 е 192.168.2.0/24.

С други думи PC2 (Windows Vista) ми е с IP address 10.55.55.100
                      subnet mask 255.255.255.0
                 default gateway: 10.55.55.1 (WAN-a на router-а)

Компютърът си получи адрес от VPN server-a
VPN IP address PC2: 172.16.0.6
subnet mask:        255.255.255.252
 
PC (Windows XP) ip address: 192.168.2.10
Default gateway: 192.168.2.1 (WAN IP на другия рутер)
mask: 255.255.255.0

Компютърът си получи адрес от VPN server-a
VPN IP address PC:  172.16.0.14
subnet mask:        255.255.255.252
 
Установих следното:
1.PC2 (Windows Vista) има ping до PC, но при опит да отворя споделените ресурси на PC посредством: \\172.16.0.14 ми дава, че няма достъп до този път.

2. PC не успява да ping-не PC2, Request timed out.

Чудя се дали проблемът не идва от firewall на Vista-та?  :6;
Или трябва да донастроя тази директива push в server.conf, която в момента ми е коментирана, не я използвам, и ако да, в моя случай какво точно трябва да отбележа там?
Не разбирам какво се има предвид под вътрешна мрежа в случая, защото веднъж имам вътрешна мрежа зад Fedora-та с адреси 10.0.0.0/24 и следващ път имам още две вътрешни мрежи зад самите WiFi рутери.
Благодаря предварително,
Поздрави

Never sigh for better world
It's already composed, played and told
Контакти:  sleepwalker
WEB  
Мнение #6 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 25 2010, 10:46

Avatar




Група: Li fans
Мнения: 763
Регистриран: Февруари 2008

Оценка: 5

Offline
след като имаш рутери зад fedora-та, от pc не можеш директно да отвориш pc2, тъйкто той се натва, освен ако рутерите ти не разрешават достъп от wan  към вътрешната им мрежа, все пак можеш да пробваш

федора:
route add -net 10.55.55.0/24 gw 10.0.0.2
route add -net 192.168.2.0/24 gw 10.0.0.222

openvpn:
push "route 10.0.0.0 255.255.255.0"
push "route 10.55.55.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"

за невъзможността да се свържеш към pc от pc2 (спри firewall-a на виста и пробвай)

Контакти:  altoas

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Мнение #7 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 25 2010, 22:45

Avatar




Група: Li fans
Мнения: 30
Регистриран: Август 2006

Оценка: няма

Offline
Привет Altoas!

Благодаря за отговора!

Имам добра новина, успях да свържа двата компютъра PC и PC2 чрез VPN-a!!!

Успях да постигна това използвайки само частта от конфигурационния файл, касаеща директивата с директория ccd. Там създадох по един файл за двата WiFi рутера.

Не използвам директивата push.

Не се наложи да въвеждам изрични изменения в route table. Пробвах предложеното от теб и забелязах, че редът, касаещ 10.0.0.0 255.255.255.0 при стартиране на VPN от клиента - довеждаше до загуба на връзката ми до Федората, интернет и всичко.

Това са LANs на WiFi рутерите:
client-config-dir /opt/openvpn-2.1.2/ccd
route 192.168.2.0 255.255.255.0 ;common name boyka - office
route 10.55.55.0 255.255.255.0 ;common name 6etaj
route 10.66.77.0 255.255.255.0 ;common name viki - 11 etaj

Забелязах в лог-а следните настройки, които преди не се появяваха:

ed Aug 25 20:21:04 2010 OPTIONS IMPORT: reading client specific options from: /opt/openvpn-2.1.2/ccd/viki
Wed Aug 25 20:21:04 2010 MULTI: Learn: 172.16.0.10 -> viki/10.0.0.10:2076
Wed Aug 25 20:21:04 2010 MULTI: primary virtual IP for viki/10.0.0.10:2076: 172.16.0.10
Wed Aug 25 20:21:04 2010 MULTI: internal route 10.66.77.0/24 -> viki/10.0.0.10:2076
Wed Aug 25 20:21:04 2010 MULTI: Learn: 10.66.77.0/24 -> viki/10.0.0.10:2076
Wed Aug 25 20:21:06 2010 viki/10.0.0.10:2076 PUSH: Received control message: 'PUSH_REQUEST'
Wed Aug 25 20:21:06 2010 viki/10.0.0.10:2076 SENT CONTROL [viki]: 'PUSH_REPLY,route 172.16.0.0 255.255.255.0
,topology net30,ping 10,ping-restart 120,ifconfig 172.16.0.10 172.16.0.9' (status=1)

Конекцията тръгна между две XP машини.
Предстои да се боря с Вистата ;)

Още веднъж благодаря за помощта!
Поздрави,

Never sigh for better world
It's already composed, played and told
Контакти:  sleepwalker
WEB  
Мнение #8 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Август 26 2010, 11:27

Avatar




Група: Li fans
Мнения: 763
Регистриран: Февруари 2008

Оценка: 5

Offline
тогава пробвай без първия push route
без push route ще трябва на ръка да задаваш на отдалечения клиент за пътя до върешната мрежа зад федората, тъйкато тя не му е default gateway

Редактирано от altoas на Август 26 2010, 11:29

Контакти:  altoas

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Мнение #9 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Ноември 08 2010, 14:39

Avatar




Група: Li fans
Мнения: 269
Регистриран: Май 2008

Оценка: 4.5

Offline
За да не пускам нова тема ще питам тука.  :22;
Имам Ubuntu router. Искам да настроя VPN, за да мога да си влизам от нас в офисната мрежа. Да ползвам принтери, шерове от машините в локалната мрежа. Кое ще е по-удачно да ползвам? openvpn или pptpd
рутерът е с 2 карти външна и вътрешна. Искам да достъпвам вътрешната мрежа

OK спрях се на pptp. използвам MS-CHAP v2. Странното е , че от 2003 и XP се закачвам на vpn-a, а от уин7 и 2008 found. не мога.... ?

Редактирано от Str82DHeaD на Ноември 08 2010, 15:54
Контакти:  Str82DHeaD

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #10
Skip to the previous post in this topic. Написано на: Ноември 09 2010, 10:48

Avatar




Група: Li fans
Мнения: 763
Регистриран: Февруари 2008

Оценка: 5

Offline
Quote: (Str82DHeaD @ Nov. 08 2010, 14:39)

За да не пускам нова тема ще питам тука.  :22;
Имам Ubuntu router. Искам да настроя VPN, за да мога да си влизам от нас в офисната мрежа. Да ползвам принтери, шерове от машините в локалната мрежа. Кое ще е по-удачно да ползвам? openvpn или pptpd
рутерът е с 2 карти външна и вътрешна. Искам да достъпвам вътрешната мрежа

OK спрях се на pptp. използвам MS-CHAP v2. Странното е , че от 2003 и XP се закачвам на vpn-a, а от уин7 и 2008 found. не мога.... ?

да, трябва да промениш настройките на сигурността на windows 7/2008 да позволят chapv2, но така по спомен не ги помня къде бяха.

Контакти:  altoas

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
Общо 10 отговор(а) от Август 22 2010, 09:59 до сега
 » Начало » Li Форуми » Help & Support » Servers & Services » Open VPN & IP Tables

© 2014 Linux Index Project
Powered by iF 1.0.0 © 2006 ikonForums