Я спрашивал об этом на форумах 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. :(
Как отмечено в обновлении вопроса, даже с двойным 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