strongswan VPN на OpenWrt

Вопрос или проблема

Привет, я использую версию Barrier Breaker OpenWRT и настроил VPN в соответствии с:
http://wiki.openwrt.org/inbox/strongswan.howto
Я могу подключиться к VPN с моего iPhone или Mac (к сети 10.10.1.0/24). Я также могу подключиться с Windows 7.
Клиенту успешно выделяется IP-адрес с помощью DHCP.
После подключения я не могу получить доступ к чему-либо в сети.
/etc/firewall.user содержит:

# Этот файл интерпретируется как скрипт оболочки.
# Поместите ваши пользовательские правила iptables здесь, они будут
# выполняться при каждом (пере)запуске брандмауэра.
iptables -I INPUT  -m policy --dir in --pol ipsec --proto esp -j ACCEPT
iptables -I FORWARD  -m policy --dir in --pol ipsec --proto esp -j ACCEPT
iptables -I FORWARD  -m policy --dir out --pol ipsec --proto esp -j ACCEPT
iptables -I OUTPUT   -m policy --dir out --pol ipsec --proto esp -j ACCEPT
# Разрешить ssh и HTTP к маршрутизатору
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --sport 22 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --sport 80 -j ACCEPT

/etc/ipsec.conf содержит:

# ipsec.conf - файл конфигурации strongSwan IPsec
# базовая конфигурация
config setup
    # strictcrlpolicy=yes
    # uniqueids = no
conn ios                                              
    keyexchange=ikev1                             
    authby=xauthrsasig                            
    xauth=server                                  
    left=%any                                     
    leftsubnet=0.0.0.0/0                          
    leftfirewall=yes                              
    leftcert=serverCert.pem                       
    right=%any                                    
    rightsubnet=10.10.1.0/24                      
    rightsourceip=%dhcp                           
    rightcert=clientCert.pem                      
    forceencaps=yes                               
    auto=add                                      

conn %default                                         
    keyexchange=ikev2                                 
    ike=aes256-sha1-modp1024!                         
    esp=aes256-sha1!                                  
    dpdaction=clear                                   
    dpddelay=300s                                     
    rekey=no       
conn win7                                             
    left=%any                                         
    leftsubnet=0.0.0.0/0                              
    leftauth=pubkey                                   
    leftcert=serverCert.pem                           
    [email protected]                       
    leftfirewall=yes                                  
    right=%any                                        
    rightauth=eap-mschapv2                            
    rightsendcert=never                               
    rightsubnet=10.10.1.0/24                          
    rightsourceip=%dhcp                               
    eap_identity=%any                                 
    auto=add     

(Реальное доменное имя маршрутизатора заменено выше на xxx.yyy.com).

/etc/strongswan.conf содержит:

# strongswan.conf - файл конфигурации strongSwan
charon {
    dns1 = 10.10.1.1
    # количество потоков рабочих процессов в charon
    threads = 16
    # отправлять идентификатор продавца strongswan?
    # send_vendor_id = yes
    plugins {
            dhcp {
                    server = 10.10.1.1
            }
            sql {                     
                    # уровень логирования для записи в sql базу данных
                    loglevel = -1                      

                    # URI к базе данных              
                    # database = sqlite:///path/to/file.db
                    # database = mysql://user:password@localhost/database
            }                                                            
    }                                                                    

    # ...                                                                
}                                                                            

pluto {                                                                      

}                                                                            

libstrongswan {                                                              

    #  установить в no, размер экспоненты DH оптимизирован                      
    #  dh_exponent_ansi_x9_42 = no                                       
}

Когда я подключаюсь как с Windows 7, так и с iPhone, статус ipsec на маршрутизаторе показывает:

Безопасные ассоциации (2 активные, 0 в процессе подключения):
     ios[5]: УСТАНОВЛЕНО 4 секунды назад, xxx.xxx.xxx.xxx[C=AU, O=Netroworx, CN=xxx.xxx.com]...xxx.xxx.xxx.xxx[C=AU, O=Netroworx, CN=client]
     ios{5}:  УСТАНОВЛЕНО, ТУННЕЛЬ, ESP в UDP SPIs: c8618e27_i 0923f471_o
     ios{5}:   0.0.0.0/0 === 10.10.1.89/32 
    win7[4]: УСТАНОВЛЕНО 45 секунд назад, xxx.xxx.xxx.xxx[xxx.xxx.com]...xxx.xxx.xxx[192.168.191.131]
    win7{4}:  УСТАНОВЛЕНО, ТУННЕЛЬ, ESP в UDP SPIs: cae3b4a6_i 67f3eaf0_o
    win7{4}:   0.0.0.0/0 === 10.10.1.0/24

(Чувствительные IP-адреса и доменные имена заменены на xxx)

Какие-либо идеи, почему пакеты не маршрутизируются через VPN?

Может быть, это проблема NAT?

Обновление: я получаю следующее, когда пытаюсь установить strongswan на Barrier Breaker:

opkg install strongswan-full
Установка strongswan-full (5.0.4-1) в root...
Загрузка http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/strongswan-full_5.0.4-1_ar71xx.ipk.
Несколько пакетов (kmod-crypto-hash и kmod-crypto-hash), предоставляющих одно и то же имя, помечены HOLD или PREFER. Используется последний.
Несколько пакетов (kmod-crypto-manager и kmod-crypto-manager), предоставляющих одно и то же имя, помечены HOLD или PREFER. Используется последний.
Несколько пакетов (kmod-crypto-core и kmod-crypto-core), предоставляющих одно и то же имя, помечены HOLD или PREFER. Используется последний.
Собранные ошибки:
 * satisfy_dependencies_for: Не удается удовлетворить следующие зависимости для strongswan-full:
 *      kernel (= 3.10.18-1-0de2f8afeb2eecb34eeca6f54b460523) * 
 * opkg_install_cmd: Не удается установить пакет strongswan-full.

У меня точно такая же проблема. Вы уже нашли решение для этой проблемы?
Некоторые эксперты говорят, что мне нужно маскировать трафик.
Попробуйте следующее:

iptables -I POSTROUTING 1 -s 10.10.1.0/24 -j MASQUERADE -t nat
iptables -I FORWARD -m conntrack --ctstate SNAT -j ACCEPT
iptables -I FORWARD -m conntrack -s 10.10.1.0/24 --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

Это не сработало для меня, но может сработает для вас.

Ответ или решение

Настройка StrongSwan VPN на OpenWrt

Введение

Ваша проблема с отсутствием доступа к сети после подключения через VPN на OpenWrt с использованием StrongSwan может быть вызвана несколькими факторами, включая настройки маршрутизации, NAT и правила брандмауэра. В этом ответе мы подробно обсудим возможные причины и предложим решения.

Текущая конфигурация

Вы предоставили конфигурации для VPN, которые включают файлы /etc/firewall.user, /etc/ipsec.conf и /etc/strongswan.conf. Из описания видно, что соединение устанавливается, но доступ к другим устройствам в подсети VPN (10.10.1.0/24) отсутствует. Это может быть связано с неправильной маршрутизацией или ограничениями в брандмауэре.

Потенциальные проблемы

  1. Правила брандмауэра:
    Ваша конфигурация /etc/firewall.user кажется недостаточной для обработки трафика от клиентов, подключенных к VPN. Вам следует убедиться, что правила разрешают пересылку трафика между интерфейсами.

  2. Маршрутизация:
    Убедитесь, что маршруты правильно настроены и отправляются через интерфейс VPN. Часто требуется добавить маршруты для устройств, которые должны быть доступны.

  3. NAT:
    Если ваши клиенты обращаются к ресурсам в локальной сети, может понадобиться применить маскарад, чтобы перенаправить трафик через VPN.

Рекомендуемые действия

  1. Обновление правил брандмауэра:
    Убедитесь, что ваши правила IPTables прописаны правильно. Вам следует добавить следующее в файл /etc/firewall.user:

    # Разрешаем входящие подключения по ESP
    iptables -I INPUT -m policy --dir in --pol ipsec --proto esp -j ACCEPT
    # Разрешаем пересылку трафика через интерфейс VPN
    iptables -I FORWARD -m policy --dir in --pol ipsec --proto esp -j ACCEPT
    iptables -I FORWARD -m policy --dir out --pol ipsec --proto esp -j ACCEPT
    # Разрешаем пересылку трафика из подсети VPN
    iptables -A FORWARD -s 10.10.1.0/24 -j ACCEPT
    iptables -A FORWARD -d 10.10.1.0/24 -j ACCEPT
  2. Маскарад:
    Если ваша сеть использует NAT, добавьте правило маскарада:

    iptables -t nat -A POSTROUTING -s 10.10.1.0/24 -o <интерфейс_интернета> -j MASQUERADE

    Замените <интерфейс_интернета> на имя интерфейса, который используется для выхода в интернет (обычно это eth0, wan или подобное).

  3. Проверка маршрутизации:
    Убедитесь, что у вас есть правильные маршруты в таблице маршрутизации на клиенте. Команды route -n и ip route помогут проверить это.

  4. Настройка DHCP:
    Если используется DHCP, убедитесь, что сервер DHCP правильно назначает шлюз по умолчанию. В идеале, он должен указывать на ваш OpenWrt, чтобы клиенты могли правильно маршрутизировать трафик.

Устранение неполадок

  • Проверьте состояние соединения на OpenWrt с помощью командной строки:

    ipsec statusall
  • На клиентской стороне проверьте, какие маршруты установлены через:

    route print
  • Используйте инструменты диагностики, такие как ping и traceroute, чтобы протестировать доступ к устройствам в вашей локальной сети.

Заключение

Обеспечение функционирования VPN на OpenWrt требует тщательной настройки правил брандмауэра и маршрутизации. С помощью предложенных выше изменений вы должны быть в состоянии устранить проблемы с доступом к сети через StrongSwan VPN. Четкое понимание работы NAT и адресации в вашей сети — ключ к успешной настройке.

Оцените материал
Добавить комментарий

Капча загружается...