Как поднять VPN подключение клиента во FreeBSD/PCBSD
Сначала ставим mpd4
cd /usr/ports/net/mpd4 ; make install clean BATCH=yes
в ядре должно быть (на всяк пожарный все что может пригодиться, что не надо - вычеркиваем):
options NETGRAPHoptions NETGRAPH_ETHERoptions NETGRAPH_NETFLOWoptions NETGRAPH_SOCKEToptions NETGRAPH_TEE#options NETGRAPH_MPPC_ENCRYPTION#options NETGRAPH_MPPC_COMPRESSIONoptions NETGRAPH_BPFoptions NETGRAPH_IFACEoptions NETGRAPH_KSOCKEToptions NETGRAPH_PPPoptions NETGRAPH_PPTPGREoptions NETGRAPH_TCPMSSoptions NETGRAPH_VJCoptions NETGRAPH_ONE2MANYoptions NETGRAPH_RFC1490options NETGRAPH_TTYoptions NETGRAPH_UI
Или то же самое можно подгрузить модулями.
Допишем в /boot/loader.conf :
netgraph_load="YES"ng_ether_load="YES"ng_netflow_load="YES"ng_socket_load="YES"ng_tee_load="YES"ng_bpf_load="YES"ng_iface_load="YES"ng_ksocket_load="YES"ng_ppp_load="YES"ng_pptpgre_load="YES"ng_tcpmss_load="YES"ng_vjc_load="YES"ng_one2many_load="YES"ng_rfc1490_load="YES"ng_tty_load="YES"ng_UI_load="YES"
Во-первых надо выянить - какой у Вас шлюз:
> netstat -rnRouting tablesInternet:Destination Gateway Flags Refs Use Netif Expiredefault 10.27.24.1 UGS 3425048 nfe0...
Добавляем в файл /etc/rc.conf строчки:
static_routes="dns1 dns2 vpn l2tp corbina"route_dns1="-host 213.234.192.8 ВАШ_ШЛЮЗ"route_dns2="-host 85.21.192.3 ВАШ_ШЛЮЗ"route_vpn="-net 85.21.0.0/24 ВАШ_ШЛЮЗ"route_l2tp="-net 85.21.17.0/24 ВАШ_ШЛЮЗ"route_corbina="-net 10.0.0.0/8 ВАШ_ШЛЮЗ"mpd_enable="YES"mpd_flags="-b"
То есть были заданы статические маршруты для днс и впн серверов (pptp/l2tp) и внутренней сети Корбины.
Файл /usr/local/etc/mpd4/mpd.conf
default:#load vpnload l2tpvpn:new -i ng0 vpn vpnset auth authname "ВАШ_ЛОГИН"set auth password "ВАШ_ПАРОЛЬ"set bundle disable multilinkset iface up-script /usr/local/etc/mpd4/io-up.shset iface down-script /usr/local/etc/mpd4/io-down.shset link no pap acfcomp protocompset link disable chapset link accept chapset link keep-alive 30 10set ipcp no vjcompset iface disable on-demandset iface idleopenl2tp:new -i ng0 l2tp l2tpset iface idleset auth authname "ВАШ_ЛОГИН"set auth password "ВАШ_ПАРОЛЬ"set bundle disable multilinkset iface up-script /usr/local/etc/mpd4/io-up.shset iface down-script /usr/local/etc/mpd4/io-down.shset link no papset link accept chapset ipcp no vjcompset link keep-alive 60 180set link max-redialset bundle disable noretryset iface enable tcpmssfixopen
Файл /usr/local/etc/mpd4/mpd.links
vpn:set link type pptpset pptp peer vpn.corbina.ruset pptp enable originate incoming outcallset pptp disable windowingl2tp:set link type l2tpset l2tp peer l2tp.corbina.netset l2tp enable originate
Файл /usr/local/etc/mpd4/mpd.secret
ВАШ_ЛОГИН "ВАШ_ПАРОЛЬ"
Файл /usr/local/etc/mpd4/io-up.sh
#!/bin/sh# Получаем адрес шлюзаip_def_gw=`route -n get -inet default | grep gateway | awk '{ print $2 }'`echo $ip_def_fw > /tmp/ip_def_gw# Получаем адреса DNS-серверовdns_servers=`cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'`route delete $4route add $4 $ip_def_gwroute delete defaultroute add default $4#vpn.corbina.netroute add -net 85.21.0.0/24 $ip_def_gw#l2tp.corbina.netroute add -net 85.21.17.0/24 $ip_def_gw# Маршруты до DNS-серверовfor host_target in `echo $dns_servers`doroute add -host $host_target $ip_def_gwdone### Добавляем маршруты до внутренних серверовroute add -host 85.21.0.36 $ip_def_gwroute add -host 85.21.79.2 $ip_def_gwroute add -host 85.21.79.25 $ip_def_gwroute add -host 85.21.79.100 $ip_def_gwroute add -host 195.14.50.16 $ip_def_gwroute add -host 195.14.50.26 $ip_def_gwroute add -host 195.14.50.93 $ip_def_gwroute add -host 85.21.88.130 $ip_def_gw #corbina.tvroute add -host 85.21.79.12 $ip_def_gw #irc.corbina.ruroute add -host 10.2.3.14 $ip_def_gwroute add -host 10.187.11.1 $ip_def_gwroute add -host 10.187.58.100 $ip_def_gw# dc.corbina.netroute add -host 85.21.79.38 $ip_def_gwroute add -host 85.21.79.38 $ip_def_gw# Маршруты до DNS-серверовfor host_target in `echo $dns_servers`doroute add -host $host_target $ip_def_gwdoneecho $4 > /tmp/dr
Файл /usr/local/etc/mpd4/io-down.sh
#!/bin/shdr=`cat /tmp/dr`ip_def_gw=`cat /tmp/ip_def_gw`route delete $drroute delete defaultroute add default $ip_def_gwrm -f /var/drrm -f /tmp/ip_def_gw
Если необходимо сделать NAT для локалки, то в io-up.sh в конец добавляется следующий код:
В скрипте - nfe0 - интерфейс, смотрящий на корбину, rl0 - в локалку
192.168.0.0/24 - внутренняя подсеть
## Поднимает НАТ#Чистим. Можно только в io-down.shif [ -f /var/run/natd.pid ] ; thenkill `cat /var/run/natd.pid`fiif [ -f /var/run/natd2.pid ] ; thenkill `cat /var/run/natd2.pid`fi#Таблица к внутренним ресурсам# оно же правило через который nat куда ходитьipfw table 12 flushipfw table 12 add 195.14.0.0/16ipfw table 12 add 85.21.79.0/24ipfw table 12 add 10.1.0.0/16ipfw table 12 add 10.2.0.0/15ipfw table 12 add 10.4.0.0/14ipfw table 12 add 10.8.0.0/13ipfw table 12 add 10.16.0.0/12ipfw table 12 add 10.32.0.0/11ipfw table 12 add 10.64.0.0/10ipfw table 12 add 10.128.0.0/9ipfw table 12 add 83.102.232.0/24ipfw table 12 add 85.21.90.0/24ipfw table 12 add 85.21.52.0/24ipfw table 12 add 83.102.0.0/24ipfw table 12 add 78.107.69.98ipfw delete 48ipfw delete 49ipfw delete 50ipfw delete 51ipfw delete 52# первый Nat до локалкиipfw add 48 divert 8667 ip from table\(12\) to 192.168.0.0/24 in via nfe0ipfw add 49 divert 8667 ip from 192.168.0.0/24 to table\(12\) out via nfe0# второй nat до инетаipfw add 51 divert 8668 ip from any to 192.168.0.0/24 in via ng0ipfw add 52 divert 8668 ip from 192.168.0.0/24 to not table\(12\) out via ng0sleep 1# Стартуем демоны первый и второй/sbin/natd -n ng0/sbin/natd -p 8667 -P /var/run/natd2.pid -n nfe0
- Войдите на сайт для отправки комментариев