Есть машина Linux ( A
), на которой запущен pptpd внутри университетской сети за брандмауэром, но с реальным IP. У меня нет доступа или знаний о распределении IP в этой сети, поэтому я не могу просто задать remoteip X.Y.Z.200-250
конфигурацию pptpd, так как это может вызвать конфликты. Интересно, можно ли создать виртуальный концентратор для всех подключенных VPN-клиентов, который затем будет преобразован в реальную сеть с помощью NAT.
Вот несколько неуклюжих ASCII-график, иллюстрирующих то, чего я хочу добиться:
PPTP-client ---\ ________________ ________________________
\ | 10.0.0.0/24 | |10.0.0.0/24 real ip|
PPTP-client ----->| Virt. hub (A) |----|ethX A eth0|----- Outside world
/ |_______________| |_______________________|
PPTP-client ---/
Гугление показывает, что PacketiX.NET и UT-VPN имеют такие встроенные возможности, но я понятия не имею, как это сделать с помощью обычного pptpd. Я пробовал создать фиктивный интерфейс, настроить его со статическим IP, а затем дать pptp-клиенту IP из этой подсети интерфейса, но безуспешно.
Использование других vpn-серверов проблематично из-за довольно параноидальных настроек брандмауэра и необходимости использовать программный ssh-сервер для любых операций на A
.
решение1
Вы можете использовать сервер PPTPd (если протокол GRE не фильтруется вашей сетью). PPTD создаст новый интерфейс ppp для каждого клиента на вашем сервере.
Например, вы указываете
localip 192.168.101.1-100
remoteip 192.168.101.101-200
Таким образом, каждый интерфейс ppp* получит новый IP из подсети 192.168.101. Наконец, вы можете преобразовать весь трафик из этой подсети в ваш реальный IP (не забудьте о net.ipv4.ip_forward=1)
# here could be full MASQUERADE or SNAT
iptables -t nat -I POSTROUTING -o real_interface0 -j MASQUERADE
# forward for all ppp + MSS tune, conntrack recommended
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 172.20.1.0/24 -j TCPMSS --clamp-mss-to-pmtu