понедельник, 5 января 2015 г.

pptp client mageia 4

Примерчик конфигурации для pptp для подключения например к виндовым vpn серверам:

cat /etc/ppp/peers/vpn1
pty "pptp server.com --nolaunchpppd --nobuffer"
#debug
remotename vpn1
user vpnuser
password "vpnpass"
linkname vpn1
lock
nodeflate
nobsdcomp
noauth
nopcomp
noaccomp
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
mppe required,stateless
logfile /var/log/ppp/vpnlog

собственно важен очень параметр mppe required,stateless без которого соединения вроде устанавливается (то есть интерфейс pptp поднимается и айпиху получает), но трафик не ходит.
debug как видите закомичен, нужен пока настраиваем, лог соответственно  logfile /var/log/ppp/vpnlog

cat /etc/ppp/ip-up.d/vpn1
#!/bin/bash
if [ ! $LINKNAME = "vpn1" ]
then
             exit 0
     fi
ip route add 192.168.10.0/24 dev ppp0

собственно создание маршрута на удаленную сеть

поднимать соединение 
pon vpn1

ls -la /usr/sbin/pon
-rwxr--r-- 1 root root 970 Сен 27 00:32 /usr/sbin/pon*

cat /usr/sbin/pon
#!/bin/sh

PPP_ON_BOOT=/etc/ppp/ppp_on_boot

case "$1" in
  -*) echo "
Usage: pon [provider] [arguments]

If pon is invoked without arguments, $PPP_ON_BOOT file will be
run, presuming it exists and is executable. Otherwise, a PPP connection
will be started using settings from /etc/ppp/peers/provider.
If you specify one argument, a PPP connection will be started using
settings from the appropriate file in the /etc/ppp/peers/ directory, and
any additional arguments supplied will be passed as extra arguments to
pppd.
"
      exit 0
      ;;
esac

if [ -z "$1" -a -x "$PPP_ON_BOOT" ]; then
  exec "$PPP_ON_BOOT"
fi

if [ -z "$1" -a ! -f /etc/ppp/peers/provider ]; then
  echo "
Please configure /etc/ppp/peers/provider or use a command line argument to
use another file in /etc/ppp/peers/ directory.
"
  exit 1
fi

if [ "$1" -a ! -f "/etc/ppp/peers/$1" ]; then
  echo "
The file /etc/ppp/peers/$1 does not exist.
"
  exit 1
fi

отключать 
poff vpn1

ls -la /usr/sbin/poff
-rwxr--r-- 1 root root 2772 Сен 27 00:33 /usr/sbin/poff*

#!/bin/sh

# $Id: poff,v 1.1 2002/11/24 23:30:44 etbe Exp $
# Written by John Hasler and based on work 
# by Phil Hands .  Distributed under the GNU GPL

if [ -x /usr/bin/kill ]; then
  KILL="/usr/bin/kill"
else
  KILL="/bin/kill"
fi
SIG=TERM
DONE="stopped"
MODE=""

usage ()
{
   cat <
usage: $0 [option] [provider]
options:
  -r        Cause pppd to drop the line and redial.
  -d        Toggle the state of pppd's debug option.
  -c        Cause pppd to renegotiate compression.
  -a        Stop all pppd's.  'provider' will be ignored.
  -h        Print this help summary and exit.
  -v        Print version and exit.
  none      Stop pppd.

Options may not be combined.

If 'provider' is omitted pppd will be stopped or signalled if and only if
there is exactly one running unless the '-a' option was given.  If
'provider' is supplied the pppd controlling the connection to that
provider will be stopped or signalled.
!EOF!
}

# Get option.  If there are none replace the "?" that getopts puts in
# FLAG on error with "null".
getopts rdcavh FLAG
if [ "$?" -ne 0 ]; then
    FLAG="null"
fi

# Check for additional options.  Should be none.
getopts :rdcavh DUMMY
if [ "$?" -eq 0 ]; then
    echo "$0: Illegal option -- ${OPTARG}."
    exit 1
fi

case $FLAG in
 "r") SIG=HUP;  DONE=signalled; shift ;;
 "d") SIG=USR1; DONE=signalled; shift ;;
 "c") SIG=USR2; DONE=signalled; shift ;;
 "a") MODE="all"; shift ;;
 "v") echo "$0$Revision: 1.1 $_TrickToPrint_RCS_Revision"; exit 0 ;;
 "h") usage; exit 0 ;;
 "?") exit 1;
esac
# Get the PIDs of all the pppds running.  Could also get these from
# /var/run, but pppd doesn't create .pid files until ppp is up.
PIDS=`pidof pppd`

# poff is pointless if pppd isn't running.
if test -z "$PIDS"; then
    echo "$0: No pppd is running.  None ${DONE}."
    exit 1
fi

# Find out how many pppd's are running.
N=`echo "$PIDS" | wc -w`

# If there are no arguments we can't do anything if there is more than one
# pppd running.
if test "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ; then
    echo "$0: More than one pppd running and no "-a" option and 
no arguments supplied. Nothing ${DONE}."
    exit 1
fi

# If either there are no arguments or '-a' was specified kill all the
# pppd's.
if test "$#" -eq 0 -o "$MODE" = "all" ; then
    $KILL -$SIG $PIDS || {
        echo "$0: $KILL failed.  None ${DONE}."
        exit 1
    }
    exit 0
fi

# There is an argument, so kill the pppd started on that provider.
PID=`ps axw | grep "[ /]pppd call $1 *\$" | awk '{print $1}'`
if test -n "$PID" ; then
    $KILL -$SIG $PID || {
        echo "$0: $KILL failed.  None ${DONE}."
        exit 1
    }
else
   echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}."
   exit 1
fi
exit 0