Добрый день, хочу поделится опыт поднятия впн канала для серфинга интернета.
Так как на нужно чо бы мы сидели в интернете под левым ip адресом выдаваемом от впски, то придется нам пере-собрать ядро с включением поддержки фаервола (ipfw) и (nat).
Приступим, я выбрал систему FreeBSD.
Ставим mpd5.
# cd /usr/ports/net/mpd5 && make install clean
Создаем конфигурационный файл mpd5.
# touch /usr/local/etc/mpd5/mpd.conf
Теперь настроем mpd5.
# nano /usr/local/etc/mpd5/mpd.conf default: load pptp_server pptp_server: # Пространство для пользователя, выделяемые ип адреса. set ippool add pool1 10.10.0.5 10.10.0.7 create bundle template B set iface enable proxy-arp set iface idle 1800 set iface enable tcpmssfix set ipcp yes vjcomp # Пул ип адресов для клиентов. set ipcp ranges 10.10.0.1/32 ippool pool1 # dns. set ipcp dns 10.10.0.1 set bundle enable compression set ccp yes mppc set mppc yes e40 set mppc yes e128 set mppc yes stateless create link template L pptp set link action bundle B set link enable multilink set link yes acfcomp protocomp #Требуем chap авторизации set link no pap chap eap set link enable chap set link keep-alive 10 60 set link mtu 1460 # Указываем или сам интерфейс на котором будет случатся mpd5 либо сам ип адрес. set pptp self vtnet0 set link enable incoming
Этого достаточно что бы просто использовать ип адрес впски удаленной.
Теперь нам нужно указать авторизационные данные дя пользователей.
# nano /usr/local/etc/mpd5/mpd.secret
dmitry Qq111111
marine Qq222222 10.10.0.6
Как видим тут, мы разрешили пользоваться воспользоваться впн туннелем двум пользователям.
Структура такая ( Логин Пароль ИП адрес)
Ип адрес можно привязывать жестко, а можно просто, что бы автоматом он сам из пула определялся.
Такс теперь нам нужно настроить резолвинг адресов, воспользуемся штатным средством днс сервером named.
# nano /etc/namedb/named.conf
Из конфигруационного файла named удаляем listen-on { 127.0.0.1; };
И добавляем на место удаленного
allow-recursion { 127.0.0.1; 10.10.0.0/24;};
Теперь разрешим запуск этих сервисов.
# nano /etc/rc.conf
mpd_enable="YES"
gateway_enable="YES"
named_enable=YES
firewall_enable=YES
firewall_type="/etc/firewall.conf"
Осталось только натсроить фаервол.
nat 1 config if vtnet0 reset same_ports add nat 1 ip from any to any via vtnet0 add allow ip from any to any
Для того что бы фаервол с натом заработали, пересобирем ядро, можно конечно и без пересборки ядра.
Добавим в конец такие записи.
# Firewal
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=5
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_NAT
options LIBALIAS
Как пересобирать ядру описано тут
Чуть не забыл, разрушаем пересылку пакетов.
sysctl net.inet.ip.forwarding=1
Перезагружаемся и пользуемся нашим впн туннелем.
Смотрим.
# ipfw show 00100 0 0 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 00300 0 0 deny ip from 127.0.0.0/8 to any 00400 6595 647653 nat 1 ip from any to any via vtnet0 00500 0 0 allow ip from any to any 65535 56 4141 allow ip from any to any