Simpleproxy másként
Simpleproxy másként
A korábban bemutatott megoldáson kívül egy másik lehetőséget mutatok be, amivel egy helyi portot egy távoli kiszolgáló más portjára továbbíthatunk (Port Forward). Ez a megoldás a működését tekintve tartalmazza az iptables DNAT és SNAT funkcióit.
A megoldás működéséhez telepíteni kell a simpleproxy csomagot.
Ezzel a /usr/bin/simpleproxy binárist telepítjük, ami az alábbiak szerint működik:
A fenti parancsot kiadva máris működik a megoldás.
Ha egy kicsit szeretnénk javítani rajta, akkor az alábbiakat végezzük el:
Készítsük el a konfigurációt tartalmazó könyvtárat és csak a root számára tegyük hozzáférhetővé:
# chmod 700 /etc/simpleproxy
Ide kerülnek a konfigurációs fájlok. Pl:
DESC="sempi ssh"
LOCAL=65012
REMOTE=10.10.10.12:22
A fájl jogosultságait állítsuk be:
A fentihez hasonló módon hozzuk létre a konfigurációs fájlokat minden továbbítani kívánt port számára.
Annak érdekében, hogy a simpleproxy-k automatikusan induljanak, a következőt tegyük a /etc/init.d/simpleproxy fájlba:
#
# simpleproxy based TCP proxying
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
CFDIR=/etc/simpleproxy
PIDBASE=/var/run/simpleproxy/pid-
PROXY=/usr/bin/simpleproxy
if [ ! -d /var/run/simpleproxy/ ]
then
mkdir -p /var/run/simpleproxy/
fi
start() {
if [ ! -r $CFDIR/$1 ]
then
echo "starting $1 failed: config file not found or not readable"
return 1
fi
. $CFDIR/$1
echo "starting $1: $DESC.."
start-stop-daemon --start --quiet \
--make-pidfile --pidfile ${PIDBASE}$1 --background \
--exec $PROXY -- -L $LOCAL -R $REMOTE
}
stop() {
if [ ! -r $CFDIR/$1 ]
then
echo "stopping $1 failed: config file not found"
return 1
fi
. $CFDIR/$1
echo "stopping $1: $DESC.."
start-stop-daemon --stop --quiet --oknodo \
--pidfile ${PIDBASE}$1 \
--exec $PROXY
rm -f ${PIDBASE}$1
}
#set -e
case "$1" in
start)
if [ -z $2 ]
then
cd $CFDIR
for f in [a-z]*[a-z0-9]
do
start $f
done
else
while shift
do
[ -z $1 ] && break
start $1
done
fi
;;
stop)
if [ -z $2 ]
then
cd $CFDIR
for f in [a-z]*[a-z0-9]
do
stop $f
done
else
while shift
do
[ -z $1 ] && break
stop $1
done
fi
;;
restart|reload|force-reload)
$0 stop;
$0 start;
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
Ez a szokványos init.d-ben alkalmazott indítást, leállítást szolgáló megoldás átgyúrt változata.
Látható, hogy a start utasítást kiadva a konfigurációs könyvárban lévő fájlokon végighaladva beállítja a simpleproxy-kat.
A /etc/init.d/simpleproxy-t is tegyük futtathatóvá, majd állítsuk be az automatikus elindulást:
Kézzel indítsuk el és győződjünk meg róla, hogy minden működik:
starting sempi_ssh: sempi ssh..
# netstat -natp | grep :65012
tcp 0 0 0.0.0.0:65012 0.0.0.0:* LISTEN 3490/simpleproxy
# ps fax | grep simpleproxy
3490 ? S 0:00 /usr/bin/simpleproxy -L 65012 -R 10.10.10.12:22
A túloldal válaszol:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 Debian-5