Поставь вардрайверов на колени Andrey Matveev Хакер, номер #082, стр. 082-106-6 % ps ax | grep authpf 3884 p1 Is+ 0:00.01 -authpf: shocker@192.168.2.2 (authpf) # pfctl -a authpf -sA authpf/shocker(3884) Посмотреть рулесеты для конкретного пользователя можно так: # pfctl -a "authpf/shocker(3884)" -s rules pass in quick on ral0 inet from 192.168.2.2 to any pass out log quick on fxp1 inet all keep state tagged 192.168.2.2 И по аналогии для таблицы NAT и правил перенаправления: # pfctl -a "authpf/shocker(3884)" -s nat nat on fxp1 inet from 192.168.2.2 to any tag 192.168.2.2 ->gt; (fxp1) round-robin rdr pass on fxp1 inet proto tcp from any to any port = 4661 ->gt; 192.168.2.2 rdr pass on fxp1 inet proto tcp from any to any port = 4662 ->gt; 192.168.2.2 rdr pass on fxp1 inet proto udp from any to any port = 4665 ->gt; 192.168.2.2 rdr pass on fxp1 inet proto udp from any to any port = 4672 ->gt; 192.168.2.2 rdr on ral0 inet proto tcp from 192.168.2.2 to any port = ftp ->gt; 127.0.0.1 port 8021 [ipsecadm: направь криптопотоки в нужное русло] Как вариант, можно отказаться от использования isakmpd и посмотреть в сторону ipsecadm(8) - программы управления защищенными соединениями. Чтобы проверить ее работу в действии, рассмотрим сценарий, когда и на сервере (TECHLAB), и на клиенте (HOME) установлена OpenBSD. [ HOME ]-(fxp1)-------[ ISP ]-------(fxp0)-[ TECHLAB ] Последовательно создаем два ключа - один для шифрования трафика (3DES, 192 bit), другой для аутентификации (SHA1, 160 bit): # mkdir -m 700 /etc/ipsec # openssl rand 24 | hexdump -e '24/1 "%02x"' >gt; /etc/ipsec/esp-enc-key # openssl rand 20 | hexdump -e '20/1 "%02x"' >gt; /etc/ipsec/esp-auth-key # chmod 600 /etc/ipsec/esp-*-key Далее, чтобы не изобретать себе лишние сложности, можно воспользоваться шаблоном из каталога /usr/share/ipsec: # cp /usr/share/ipsec/rc.vpn /etc/ipsec/rc.vpn # vi /etc/ipsec/rc.vpn /* В отладочном режиме команды выводятся на экран без исполнения, комментируем */ #DEBUG=echo /* IP-адреса локального и удаленного компьютеров */ GW_LOCAL=81.211.1.1 GW_REMOTE=85.140.2.2 /* Не указываем CIDR-нотации внутренних подсетей */ LOCAL_NETWORKS="" REMOTE_NETWORKS="" /* Выбранные методы шифрования и аутентификации */ ENC=3des AUTH=sha1 /* Специальные индексы для создания туннеля */ SPI_OUT=1000 SPI_IN=1001 /* Указываем абсолютные пути к файлам с ключами */ KEYFILE=/etc/ipsec/esp-enc-key AUTHKEYFILE=/etc/ipsec/esp-auth-key На стороне клиента скрипт будет выглядеть с минимальными правками: # vi /etc/ipsec/rc.vpn [snip] GW_LOCAL=85.140.2.2 GW_REMOTE=81.211.1.1 [snip] SPI_OUT=1001 SPI_IN=1000 [snip] После того, как с помощью программы безопасного копирования scp(8) ключи (/etc/ipsec/esp-{auth,enc}-key) будут переданы клиенту, останется только запустить rc.vpn на каждом из хостов: server# sh /etc/ipsec/rc.vpn client# sh /etc/ipsec/rc.vpn И при необходимости добавить его запуск в один из стартовых файлов. Например, так: |