[Linux] Разрешаем vpn pptp через nat для локальной сети

Как оказывается, просто включить NAT недостаточно. Более того, недостаточно даже подключить helper через sysctl:

net.netfilter.nf_conntrack_helper=1

В сети пишут, что нужно подгрузить модули (некоторые ещё уточняют, что это нужно было до версии 8.Х включитель, а с 9-ой достаточно просто подключить helper через sysctl, но как оказывается, недостаточно)

nf_nat_pptp
nf_nat_proto_gre
nf_conntrack_pptp
nf_conntrack_proto_gre
nf_nat
nf_conntrack

Ну что, давайте попробуем модгрузить:

insmod /lib/modules/4.19.0-16-amd64/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
insmod: ERROR: could not insert module /lib/modules/4.19.0-16-amd64/kernel/net/ipv4/netfilter/nf_nat_pptp.ko: Unknown symbol in module

при этом в логе будут похожие сообщения:

ip_gre: Unknown symbol ip_tunnel_rcv (err -2)

Можно подумать, что мы подгрузили модули не в том порядке, но перепоробовав все возможные варианты убеждаемся, что дело в чём-то другом. Методом дедукции, решил попробовать поставить на шлюзе пакет pptpd (да, он не стоял, да и зачем ему стоять, когда нужно просто NAT‘ить pptp подключения из локалки в мир?). После установки, модули подгрузились:

lsmod  | grep pptp
nf_nat_pptp            16384  0
nf_nat_proto_gre       16384  1 nf_nat_pptp
nf_conntrack_pptp      16384  1 nf_nat_pptp
nf_conntrack_proto_gre    16384  1 nf_conntrack_pptp
nf_nat                 36864  4 nf_nat_ipv4,xt_nat,nf_nat_pptp,nf_nat_proto_gre
nf_conntrack          172032  10 xt_conntrack,nf_nat,xt_state,nf_conntrack_pptp,ipt_MASQUERADE,nf_nat_ipv4,xt_nat,nf_nat_pptp,nf_conntrack_netlink,nf_conntrack_proto_gre

Посмотрим заодно, нормально ли NAT‘ится gre/pptp:

conntrack -L | egrep -i "gre|pptp"
gre 47 18000 src=192.168.13.21 dst=X.X.X.X srckey=0x100 dstkey=0xde5 src=X.X.X.X dst=Y.Y.Y.Y srckey=0xde5 dstkey=0xd83f [ASSURED] mark=0 use=2
gre 47 17999 src=192.168.13.166 dst=X.X.X.X srckey=0x7ddd dstkey=0xde6 src=X.X.X.X dst=Y.Y.Y.Y srckey=0xde6 dstkey=0xed7d [ASSURED] mark=0 use=1
tcp 6 431953 ESTABLISHED src=192.168.13.166 dst=X.X.X.X sport=60797 dport=1723 src=X.X.X.X dst=Y.Y.Y.Y sport=1723 dport=60797 [ASSURED] mark=0 helper=pptp use=2
tcp 6 431986 ESTABLISHED src=192.168.13.21 dst=X.X.X.X sport=55359 dport=1723 src=X.X.X.X dst=Y.Y.Y.Y sport=1723 dport=55359 [ASSURED] mark=0 helper=pptp use=2

Подытожим: для успешного достижения цели на пустом сервере нужно:
1) включить helper, если не включён
2) поставить пакет pptpd, если не установлен.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *