|
Мой скрипт для подключения к интернету через ADSL
#!⁄bin⁄sh
# change the next line to match the path of your pptp binary
PPTP=pptp
NAME=adsl
DESC="ADSL connection"
PIDFILE=⁄var⁄run⁄$NAME.pid
LOCK=⁄var⁄lock⁄adsl
TEMPFILE=⁄tmp⁄adslTempFile
# test -e $LOCK && exit 0
touch $LOCK
## set -e # not needed
# if successful returns 0, 1 otherwise
function connect () {
iptables -F
iptables -F -t nat
ifconfig eth0 down
ifconfig ppp0 down &> ⁄dev⁄null
killall pptp &> ⁄dev⁄null
ifconfig eth0 10.200.1.1 netmask 255.0.0.0 mtu 1500
ifconfig eth0 up
sleep 1
pptp 10.0.0.138 --quirks=BEZEQ_ISRAEL debug user username@IActcom remotename "10.0.0.138 RELAY_PPP1" defaultroute mtu 1452 mru 1452 noauth
sleep 3
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Port forwarding to windows machine (192.168.0.1)
# Linux internal IP is 192.168.0.7
iptables -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to 192.168.0.1:4662
iptables -t nat -A PREROUTING -p udp --dport 4662 -j DNAT --to 192.168.0.1:4662
echo "1" > ⁄proc⁄sys⁄net⁄ipv4⁄ip_forward
echo "1" > ⁄proc⁄sys⁄net⁄ipv4⁄ip_dynaddr
while ps aux > $TEMPFILE; grep pppd $TEMPFILE &> ⁄dev⁄null; do
sleep 1
if ifconfig ppp0 | grep "inet addr" &> ⁄dev⁄null; then
sleep 2
cd ⁄tmp
⁄usr⁄local⁄sbin⁄darkstat -i eth0 -p 888 > ⁄dev⁄null &
return 0
fi
done
rm -f $TEMPFILE
# pppd died, connection failed
echo Failed. Trying...
return 1
}
function disconnect () {
ifconfig ppp0 down &> ⁄dev⁄null
killall pptp &> ⁄dev⁄null
killall pppd &> ⁄dev⁄null
while ps aux > $TEMPFILE; grep pppd $TEMPFILE &> ⁄dev⁄null; do
sleep 1
done
rm -f $TEMPFILE
ifconfig eth0 down
rm -f ⁄var⁄run⁄pptp⁄10.0.0.138
}
function start () {
echo -n "Starting $DESC: "
until connect; do
disconnect
done
echo "$NAME."
}
function stop () {
echo -n "Stopping $DESC: "
disconnect
echo "$NAME."
}
function restart () {
stop
start
}
function check () {
while ps aux > $TEMPFILE; grep pppd $TEMPFILE &> ⁄dev⁄null; do
sleep 1
if ifconfig ppp0 | grep "inet addr" &> ⁄dev⁄null; then
return 0
fi
done
rm -f $TEMPFILE
echo "Disconnected. Restarting $DESC..."
until connect; do
disconnect
done
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|force-reload)
sleep 2
restart
;;
check)
check
;;
*)
echo "Usage: ⁄etc⁄init.d⁄adsl {start|stop|restart|force-reload}"
rm -f $LOCK
exit 1
esac
rm -f $LOCK
exit 0
|