Я использую dd-wrt в качестве домашней настройки маршрутизатора, и это работает нормально. Теперь я хотел выяснить, как использовать iPad для настройки туннеля IPSec к моей домашней сети, пока я в дороге.
На данный момент PPTP небезопасен, поэтому я хочу использовать что-то на основе IPSec. Исходя из того, что я могу найти, dd-wrt не поддерживает IPSec. Поэтому я подумал, что в моей домашней сети в качестве терминатора VPN можно установить Linux-систему с racoon.
Итак, в графической форме,
iPad (в дороге) ------- [Интернет] ------ [dd-wrt @ home] ---- [linuxbox @ home]
На dd-wrt я настроил следующее:
- Переадресация обоих портов 500 и 4500 на ящик linux (udp/tcp)
- Брандмауэр SPI включен
- IPSec и L2TP passthrough включены
На коробке linux включена пересылка IPv4
Вот установка енота
log debug;
#log notify;
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
listen {
adminsock disabled ;
}
mode_cfg {
network4 192.168.1.210 ;
pool_size 10 ;
netmask4 255.255.255.0 ;
dns4 192.168.1.1 ;
wins4 192.168.1.11 ;
}
remote anonymous {
exchange_mode aggressive ;
#my_identifier fqdn "vpn.foo.org" ;
peers_identifier fqdn "vpn.foo.org" ;
lifetime time 24 hour ;
proposal_check claim ;
generate_policy on ;
nat_traversal on ;
dpd_delay 20 ;
proposal {
encryption_algorithm aes ;
hash_algorithm sha1 ;
authentication_method xauth_psk_server ;
dh_group 2 ;
}
}
sainfo anonymous {
pfs_group 2;
lifetime time 24 hour ;
encryption_algorithm aes ;
authentication_algorithm hmac_sha1 ;
compression_algorithm deflate ;
}
Итак, довольно ванильная настройка, я переключусь на использование сертификатов позже.
Прямо сейчас, просматривая логи, racoon нормально запускается на linux box, но по какой-то причине он даже не видел каких-либо попыток договориться о трафике с iPad, поэтому я должен что-то здесь упустить.
Что я хотел бы знать, так это выяснить, чего не хватает. Я подозреваю, что на блоке dd-wrt должна быть сделана некоторая настройка, чтобы отправлять трафик IP 50 и 51 с IP-протоколом с него на блок linux.
Я не могу понять правила iptables, необходимые для пересылки IPSec на виртуальную машину.
У меня есть следующее, но я подозреваю, что мне нужны некоторые правила предварительной маршрутизации и, возможно, некоторые правила последующей маршрутизации.
iptables -I FORWARD 23 -p 50 -d 192.168.1.10 -j ACCEPT
iptables -I FORWARD 23 -p 51 -d 192.168.1.10 -j ACCEPT
Кажется, что следующее не работает, как ожидалось.
iptables -t nat -I PREROUTING 2 -p 50 -d $(nvram get wan_ipaddr) -j DNAT --to 192.168.1.10
iptables -t nat -I PREROUTING 2 -p 51 -d $(nvram get wan_ipaddr) -j DNAT --to 192.168.1.10
Следственные заметки:
- Это началось с невозможности подключения. Я подозревал, что мне нужно изменить iptables, но это не обязательно. Переадресация портов 500 и 4500 в конечную точку является достаточной.
- Похоже, что первый пакет теперь добирается до енота.
- Вывод tcpdump "17: 45: 50.652827 IP wan.isakmp> 192.168.1.10.isakmp: isakmp: фаза 1 I идент"
- похоже, что тогда начинается согласование, НО оно просто останавливается при попытке согласовать тип шифрования. Вставить из системного журнала для енота: http://pastebin.com/RFmbJ7Hz
- Теперь он прошел переговорную часть, и туннель устанавливается после запроса аутентификации. Но трафик не течет.
- После дополнительного чтения я настроил подсеть в mode_cfg на другую подсеть, чем подсеть по умолчанию на конечной точке. Я подозреваю, что мне нужно установить маршрут, если я хочу, чтобы локальные машины могли общаться с ним.
- Сейчас моя проблема в том, что похоже, что NAT-T не работает, потому что я не могу получить интернет-трафик.