Saturday, May 12, 2007

mac os x pptp persistent connection

corbina и другие vpn провайдеры: как подключиться и расшарить интернет
предупреждение: вам придется перед тем, как сделать это, освоить терминал и редактирование файлов в нем (мне нравится vim, но я не стану объяснять вам как в нем работать. инструкция для nano).

по отдельности ничего работать не будет. сначала выполните все шаги.



примечание: если у вас все работает, то не стоит делать описанного ниже.

если вам нужно только подключиться, выполняйте шаги с первого по третий. если нужно подключиться и расшарить, то

шаг первый. /etc/rc.local

/usr/sbin/pppd plugin PPTP.ppp remoteaddress vpn.corbina.ru logfile /var/log/ppp.log user USERNAME password PASSWORD defaultroute usepeerdns persist maxfail 0
/usr/libexec/InternetSharing


описание:

важно: заменить USERNAME и PASSWORD на свои логин и пароль соответственно

первая строка соединит вас с интернетом прямо при старте компьютера. при дисконнекте соединит заново
а вторая строка расшарит этот интернет

шаг второй. /etc/ppp/check-and-reconnect.sh
#!/bin/sh

GOOGLE_CHECK=`/sbin/ping -c 10 -o google.com && echo ok`

if [ "x$GOOGLE_CHECK" == "x" ] ; then
echo >&2 "link failed"
kill -1 $(< /var/run/ppp0.pid)
fi


после того, как создали файл, в терминале выполните
sudo chmod 755 /etc/ppp/check-and-reconnect.sh
sudo chown root:wheel /etc/ppp/check-and-reconnect.sh


этот скрипт будет проверять соединение с гугл и при недоступности гугла пинать соединение с корбиной на предмет пересоединения

шаг третий /var/cron/tabs/root
*/10 * * * * /etc/ppp/check-and-reconnect.sh


после того, как создали файл, в терминале выполните
sudo chmod 600 /var/cron/tabs/root
sudo chown root:wheel /var/cron/tabs/root


примечание для флеймеров и эстетов: для crontab -e нужна установленная переменная EDITOR. объяснять, как ее устанавливать, я не хочу по причине, указанной в первом абзаце поста.

примечание для тех, кому не нужно расшаривать интернет: теперь сохраняйтесь и перезагружайте машину. все должно работать.

шаг четвертый. /etc/natd.conf
same_ports yes
use_sockets yes
dynamic yes
interface ppp0


это позволит пакетам, переданным на машину с других машин, уходить в интернет (и обратно)

шаг пятый. /etc/ppp/ip-up
#!/bin/sh

IPFW='/sbin/ipfw'

/usr/sbin/natd -f /etc/natd.conf
$IPFW add 1001 divert natd all from any to any via $1

$IPFW add 501 allow tcp from any to any in recv en1

/usr/libexec/InternetSharing

/usr/sbin/sysctl -w net.inet.ip.forwarding=1


и еще /etc/ppp/ip-down
#!/bin/sh

IPFW='/sbin/ipfw'

$IPFW delete 1001

$IPFW delete 501

/usr/libexec/InternetSharing


после того, как создали файлы, в терминале выполните
sudo chmod 755 /etc/ppp/ip-{up,down}
sudo chown root:wheel /etc/ppp/ip-{up,down}


важно: замените интерфейс en1 на тот, который у вас airport.

описание: сие действо открывает после соединения ваш компьютер для атак через airport. а после рассоединения - закрывает. в принципе, вы можете удалить строчку с цифрой 501, но тогда на компьютерах, для которых вы расшариваете интернет, отключатся все сервисы, закрытые у вас в закладке firewall в секции shared ваших system preferences. но можете на этот текст не обращать внимания. потому что если кто-то сильно захочет, то сломает вашу машину даже с работающим файрволлом.

после перезагрузки вы станете счастливым обладателем расшаренного интернета.
примечание: или не станете.