Правила iptables, разрешающие L2TP/IPSEC VPN за брандмауэром
Я спрашивал об этом на форумах Smoothwall Express, но они по понятным причинам не хотят оказывать им большую помощь. Ведь они действительно хотят продать коммерческую версию.
Мне нужно предоставить L2TP/IPSEC VPN для удаленной поддержки некоторых новых машин, которые мы скоро получим (в этой части выбора нет). Поскольку удаленный пользователь также должен проходить проверку подлинности в Active Directory, мне нужно запускать VPN на нашем сервере Windows (2003), а не непосредственно на брандмауэре.
Поскольку Smoothwall Express не предусматривает пересылку протоколов из обычного интерфейса управления, это необходимо сделать, отредактировав настройки iptables в rc.firewall.up
, В этом и заключается моя проблема. Я не знаю iptables и чувствую, что даже если я найду время, чтобы прочитать об этом, риск того, что я его испорчу, будет значительным.
Следующий раздел в настоящее время существует в rc.firewall.up
:
# IPSEC
/sbin/iptables -N secin
/sbin/iptables -A secin -i ipsec0 -j ACCEPT
/sbin/iptables -A INPUT -j secin
/sbin/iptables -N secout
/sbin/iptables -A secout -i ipsec0 -j ACCEPT
/sbin/iptables -A FORWARD -j secout
[некоторые несвязанные вещи здесь]
# IPSEC
/sbin/iptables -N ipsec
/sbin/iptables -A ipsec -p udp --destination-port 500 -j ACCEPT
/sbin/iptables -A ipsec -p udp --destination-port 4500 -j ACCEPT
/sbin/iptables -A ipsec -p 50 -j ACCEPT
/sbin/iptables -A ipsec -p 51 -j ACCEPT
/sbin/iptables -A block -i ppp0 -j ipsec
/sbin/iptables -A block -i ippp0 -j ipsec
if [ "$RED_DEV" != "" ]; then
/sbin/iptables -A block -i $RED_DEV -j ipsec
fi
Если я не ошибаюсь, что второй бок вызовет трафик, который я хочу перенаправить, вместо этого. Я попытался закомментировать второй блок и добавить этот, который адаптирован из строк, необходимых для прохождения PPTP (что работает), и того, что я смог получить из различных источников:
# L2TP/IPSEC
/sbin/iptables -N l2tp
/sbin/iptables -A l2tp -p udp --destination-port 500 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p udp --destination-port 1701 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p udp --destination-port 4500 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p 50 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p 51 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -I FORWARD -j l2tp
/sbin/iptables -t nat -N l2tp
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 500 -j DNAT --to 192.169.0.7:500
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 1701 -j DNAT --to 192.169.0.7:1701
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 4500 -j DNAT --to 192.169.0.7:4500
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p 50 -j DNAT --to 192.169.0.7
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p 51 -j DNAT --to 192.169.0.7
/sbin/iptables -t nat -A PREROUTING -j l2tp
... но это не работает Где я заболел?
Между прочим, $RED_DEV
переводит на общедоступный интерфейс и, очевидно, 192.168.0.7
мой VPN сервер
Обновить:
Оказывается, что вышеуказанные настройки работают - вроде. Я тестирую это из дома, где у меня есть MacBook и несколько компьютеров с Windows XP. Я могу нормально подключиться с Mac, но не могу подключиться ни с одной из машин Windows. К сожалению, машиностроительная компания, которая требует этот VPN для удаленной поддержки, использует только Windows XP.:(
2 ответа
Как отмечено в обновлении к вопросу, даже с двойным NAT VPN работает от Mac до Windows, но не от Windows до Windows. Кажется, что на самом деле нужно только найти правильный поисковый запрос, чтобы найти решение.
Согласно этой статье базы знаний, на клиентском компьютере с Windows XP нам нужно создать новый DWORD
значение по имени AssumeUDPEncapsulationContextOnSendRule
в HKLM\System\CurrentControlSet\Services\IPSec
, Для двойного NAT требуется значение 2.
Теперь мне нужно найти решение для Windows 7, потому что это неизбежно, что рано или поздно мне придется иметь дело с этим.
Обновить
Для тех, кто сталкивается с такой же проблемой, исправление для Windows 7 заключается в создании нового DWORD
значение по имени AssumeUDPEncapsulationContextOnSendRule
в HKLM\SYSTEM\CurrentControlSet\services\PolicyAgent
, Опять же, для двойного NAT требуется значение 2.
Вот руководство, чтобы убедиться, что клиентские порты открыты на самой машине Windows.
https://www.magnumvpn.com/setup-windows-10-firewall-l2tp.html