FB als openVPN-Client mit geändertem Pseudo-Image

lanlane

Neuer User
Mitglied seit
16 Feb 2008
Beiträge
25
Punkte für Reaktionen
0
Punkte
1
Hallo Forum!

Ich habe mir ein Pseudo Image auf the-construct.com erstellt.
Das Ganze mit tun/tap-Device, OpenVPN uns dropbear.
Da ich die Zertifikate gerne in dem Image integrieren möchte habe ich das Pseudo.Image angepasst. leider funktioniert es nicht.
Es wäre super, wenn hier mal jemand drübergucken könnte. Für mich sieht das soweit alles ganz vernünftig aus...:confused:

Hier mein Versuch:
Code:
#!/bin/sh

##################################################################################
# install results:
##################################################################################
export INSTALL_SUCCESS_NO_REBOOT=0
export INSTALL_SUCCESS_REBOOT=1
export INSTALL_WRONG_HARDWARE=2
export INSTALL_KERNEL_CHECKSUM=3
export INSTALL_FILESYSTEM_CHECKSUM=4
export INSTALL_URLADER_CHECKSUM=5
export INSTALL_OTHER_ERROR=6
export INSTALL_FIRMWARE_VERSION=7

##################################################################################

echo "install: check and install new firmware ..."
LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led  ] ; then
  LED_DEVICE=/var/led
  echo "set led: ${LED_DEVICE}"
fi

##################################################################################
# start info led flashing
##################################################################################
echo "set INFO led to blink (modul=7, state=4)"
echo 7,4 > ${LED_DEVICE}
cat > /var/tmp/debug.cfg << 'EOF'
#!/bin/sh

LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led  ] ; then
  LED_DEVICE=/var/led
  echo "set led: ${LED_DEVICE}"
fi
# start internet phone led flashing
echo "set internet phone led to blink (modul=14, state=3)"
echo 14,3 > ${LED_DEVICE}

# check kernel version
KERNEL_VERSION=`uname -r | grep 2.6`
if [ -z "${KERNEL_VERSION}" ]
then
  KERNEL_VERSION="linux24"
  ETHERWAKE="etherwake"
else
  KERNEL_VERSION="linux26"
  ETHERWAKE="ether-wake"
fi

# init busybox var
BUSYBOX="/bin/busybox"

# wait to be able to interrupt in case of emergency
sleep 120

# load VPN-Client (OpenVPN)

# create tun-device
mknod /var/tmp/tun c 10 200

# write 'client.key' to file
cat > /var/tmp/client.key << 'ENDSECRETKEY'
-----BEGIN RSA PRIVATE KEY-----
blablubb
-----END RSA PRIVATE KEY-----

ENDSECRETKEY

# write 'client.crt' to file
cat > /var/tmp/client.key << 'ENDSECRETCRT'
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 3 (0x3)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=xx, ST=xxx, L=location, O=domain.tld, CN=mail.domain.tld/L=location
        Validity
            Not Before: Apr 26 17:00:21 2008 GMT
            Not After : Apr 24 17:00:21 2018 GMT
        Subject: C=xx, ST=xxx, O=domain.tld, CN=client/L=location
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
					xx:xx:xx:xx:xx:xx
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
            X509v3 Authority Key Identifier: 
                keyid:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
                DirName:/C=xx/ST=xxx/L=location/O=domain.tld/CN=server.domain.tld/[email protected]
                serial:xx:xx:xx:xx:xx:xx

    Signature Algorithm: md5WithRSAEncryption
        blablubb
-----BEGIN CERTIFICATE-----
blablubb
-----END CERTIFICATE-----

ENDSECRETCRT

# write 'ca.crt' to file
cat > /var/tmp/ca.crt << 'ENDSECRETCA'
-----BEGIN CERTIFICATE-----
blablubb
-----END CERTIFICATE-----

ENDSECRETCA

# write 'client.ovpn' to file
cat > /var/tmp/client.ovpn << 'ENDSERVERCONF'
client
dev tun 
proto udp 
remote mail.domain.tld portxy 
resolv-retry infinite 
nobind 
user nobody 
group nogroup 
persist-key 
persist-tun 
ca /var/tmp/ca.crt 
cert /var/tmp/client.crt 
key /var/tmp/client.key 
comp-lzo 
verb 3
ENDSERVERCONF

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/files/${KERNEL_VERSION}/openvpn ]
  then
    echo "copy ${f}/files/${KERNEL_VERSION}/openvpn"
    cp ${f}/files/${KERNEL_VERSION}/openvpn /var/tmp/openvpn
  fi
done
# check if file already exists
if [ ! -f /var/tmp/openvpn ]
then
  # wait for server
  while !(ping -c 1 server.otherdomain.tld)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/openvpn http://server.otherdomain.tld/files/${KERNEL_VERSION}/openvpn
fi

# make them executable
chmod +x /var/tmp/openvpn
chmod 0600 /var/tmp/client.ovpn
chmod 0600 /var/tmp/client.crt
chmod 0600 /var/tmp/client.key
chmod 0600 /var/tmp/ca.crt 

# start OpenVPN
/var/tmp/openvpn --config /var/tmp/client.ovpn

# load SSH-Server (dropbear) and etherwake

# CONFIGURATION

# SSH
# port
dropbearport="8080"
# password
PASSWD='$1$GxeU7ElQ$xR4XdJn4DIRcSpgBcERK7.'

# Etherwake
# MAC address
wolmac="01:23:67:45:89:AB"
# interface to use for WOL
# intf = std  - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="eth0"

# CONFIGURATION END

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/files/${KERNEL_VERSION}/dropbear ]
  then
    echo "${f}/files/${KERNEL_VERSION}/dropbear"
    cp ${f}/files/${KERNEL_VERSION}/dropbear /var/tmp/dropbear
  fi
done
# check if file already exists
if [ ! -f /var/tmp/dropbear ]
then
  # wait for server
  while !(ping -c 1 server.otherdomain.tld)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/dropbear http://server.otherdomain.tld/files/${KERNEL_VERSION}/dropbear
fi

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/files/${KERNEL_VERSION}/busybox ]
  then
    echo "${f}/files/${KERNEL_VERSION}/busybox"
    cp ${f}/files/${KERNEL_VERSION}/busybox /var/tmp/busybox
  fi
done
# check if file already exists
if [ ! -f /var/tmp/busybox ]
then
  # wait for server
  while !(ping -c 1 server.otherdomain.tld)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/busybox http://server.otherdomain.tld/files/${KERNEL_VERSION}/busybox
fi

# make them executable
chmod +x /var/tmp/busybox
chmod +x /var/tmp/dropbear

# set busybox var
BUSYBOX="/var/tmp/busybox"

# change root password
${BUSYBOX} sed -e "/root:/s#^root:[^:]*:#root:${PASSWD}:#" -i /var/tmp/shadow

# create symlink for dropbearkey
ln -s /var/tmp/dropbear dropbearkey

${BUSYBOX} uudecode -o /var/tmp/dropbear_rsa_host_key << 'RSA'
begin 600 /var/tmp/dropbear_rsa_host_key
blablubb
end

RSA

${BUSYBOX} uudecode -o /var/tmp/dropbear_dss_host_key << 'DSS'
begin 600 /var/tmp/dropbear_dss_host_key
blablubb
end

DSS

# start dropbear
sleep 60
/var/tmp/dropbear -p ${dropbearport} -r /var/tmp/dropbear_rsa_host_key -d /var/tmp/dropbear_dss_host_key

# create simplified WOL script
echo "${BUSYBOX} ${ETHERWAKE} -i ${wolinterface} ${wolmac}" > /var/tmp/startpc

# make it executable
chmod +x /var/tmp/startpc

# make FBF accessable from the internet (192.168.178.253)
sleep 10
ifconfig eth0:1 192.168.178.253 netmask 255.255.255.0 broadcast 192.168.178.255 up

# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}

EOF

# write debug.cfg
cat /var/tmp/debug.cfg > /var/flash/debug.cfg

# delete /var/tmp/debug.cfg
rm /var/tmp/debug.cfg


# reboot
exit $INSTALL_SUCCESS_REBOOT

# (c) 2006 Andreas Baginski

Vielen Dank!
 
Ohne mehr Infos, was nicht geht, wird dir keiner helfen können...
Startet deine Config überhaupt auf der Box? Speziell ob deine "user" und "group" Befehle laufen, würde ich erstmal für fraglich halten.

Also bitte erstmal per telnet auf die Box und deine Config auf der Box testen und ggf. die Ausgabe hier posten. Ohne ein "daemon" in der Config oder ein "&" hinter dem openvpn Aufruf (zum in den Hintergrund schicken) würde das ganze Skript übrigens nicht bis zum Ende laufen

Jörg
 
Von dem Neuen geht leider nichts... ich werde das mal mit dem telnet testen...
Ich wollte telnet eigentlich vermeiden...
 
Du kannst es ja ohne die beiden Befehle und mit daemon dirn mal versuchen, ansonsten wirst du um ein telnet nicht herumkommen...

Jörg
 
Kostenlos!

Statistik des Forums

Themen
248,922
Beiträge
2,305,228
Mitglieder
378,646
Neuestes Mitglied
atrora