1

(1 ответов, оставленных в FreeBSD & BSD)

Доброго времени суток!
Мы с товарищем задались целью настроить VPN-тунель через ipsec и ADSL на OS FreeBSD 6.3.
Нам очень важно реализовать систему именно так, как было задумано. Поэтому варианты "OpenVPN проще и лучше" нам не подходят.
Стенд: селерон 900 с фряхой, на борту два сетевых интерфейса - rl0 наружний (к нему подключён ADSL-модем), rl1 - внутренний( смотрит в локалку). Модем - D-link 500t, все порты проброшены (включен DMZ). В локалке обычный свитч и машина на винде. На другой стороне всё тоже самое, только другие Ip.
Проблема: нам удалось сделать тунель, виндовая машина из одной локалки спокойно видит виндовую тачку из другой локалки. Но при этом не работает шифрование. При запуске демонов racoon и ipsec локалка на противоположной стороне перестаёт пинговаться. При этом внешний Ip модема пингуется.

Обозначу что есть что:
192.168.1.1 - внутренний IP модема
192.168.1.12 - IP на интерфейсе rl0, внешний для фряхи, одинаков на обоих серверах
192.168.10.1 - IP на интерфейсе rl1, смотрит в локалку, для первого сервера
192.168.20.1 - IP на интерфейсе rl1, смотрит в локалку, для второго сервера
192.168.10.2 - IP виндовой машины в локалке первого сервера
192.168.20.2 - IP виндовой машины в локалке второго сервера
A.B.C.D - внешний IP модема (что-то вроде 172.24.99.99) для первого сервера.
W.X.Y.Z - внешний IP модема (что-то вроде 172.24.99.99) для второго сервера.

Вот что записано в файлах настройки на первом сервере:
Для первого сервера:
ipsec.conf:

flush;
spdflush;
spdadd 192.168.1.12/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/192.168.1.12-W.X.Y.Z/require;
spdadd W.X.Y.Z/32 192.168.1.12/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-192.168.1.12/require;

Файл psk.txt:
W.X.Y.Z secret1

racoon.conf:

padding
{
    maximum_length 20;    # maximum padding length.
    randomize off;        # enable randomize length.
    strict_check off;    # enable strict check.
    exclusive_tail off;    # extract last one octet.
}

listen
{
    #isakmp ::1 [7000];
    #isakmp 202.249.11.124 [500];
    #admin [7002];        # administrative port for racoonctl.
    #strict_address;     # requires that all addresses must be bound.
}

timer
{
    # These value can be changed per remote node.
    counter 5;        # maximum trying count to send.
    interval 20 sec;    # maximum interval to resend.
    persend 1;        # the number of packets per send.

    # maximum time to wait for completing each phase.
    phase1 30 sec;
    phase2 15 sec;
}

rc.conf:

ifconfig_rl0="inet 192.168.1.12  netmask 255.255.255.0"
ifconfig_rl1="inet 192.168.10.1 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
hostname="server"

gif_interfaces="gif0"
gifconfig_gif0="192.168.1.12 W.X.Y.Z"
ifconfig_gif0="inet 192.168.10.1 192.168.20.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.20.0 192.168.20.1"

gateway_enable="YES"

# IPSEC
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"

# Racoon
racoon_enable="YES"

На второй машине всё тоже самое, только вмессто W.X.Y.Z стоит A.B.C.D.