RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Боковая панель


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
linux:vpn_pptpd


Сервер PPTPD, VPN

/etc/pptpd.conf

option /etc/ppp/pptpd-options
logwtmp
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
/etc/ppp/pptpd-options, setup 128-bit MPPE with MS-CHAP v2

name pptpd
refuse-eap
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
# for iOS device compatibility
nopcomp
noaccomp
mtu 1400
mru 1400
default-asyncmap
/etc/sysctl.conf

net.ipv4.ip_forward=1
setup iptables in /etc/rc.local and make it persist even after reboot

iptables -t nat -A POSTROUTING -j MASQUERADE

PPTPD с одним внешним адресом

Исходные данные: CentOS 6, 1 внешний IP Задача: настроить pptpd для личного использования.

# yum install pptpd
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT 
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT 

/etc/ppp/ip-up

ifconfig $1 mtu 1492

pptpd.conf

[root@vpngw3 ~]# cat /etc/pptpd.conf 
#start of custom file
logwtmp
option /etc/ppp/options.pptpd
#localip 185.72.246.227-229
localip 185.72.246.252
remoteip 192.168.246.227-229
###localip 192.168.246.1-254
###remoteip 185.72.246.227-229
listen 185.72.246.252
#end of custom file
debug

PPTPD с несколькими внешними адресами

Исходные данные: CentOS 5, X внешних IP Задача: Каждому пользователю выдавать закрепленный за ним внешний IP

iptables -t nat -A POSTROUTING -s (IP)/24 -o eth0 -j SNAT --to-source (IP)
iptables -t nat -A POSTROUTING -s (IP)/24 -o eth0 -j SNAT --to-source (IP)
echo 1 > /proc/sys/net/ipv4/ip_forward  
iptables -A INPUT -p gre -j ACCEPT  
iptables -A INPUT -m tcp -p tcp -—dport 1723 -j ACCEPT  

/etc/pptpd.conf

1

/etc/ppp/chap-secrets

[root@vpngw3 ~]# cat /etc/ppp/chap-secrets 
# Secrets for authentication using CHAP
# client        server  secret                  IP addres
Alice * secret1 192.168.20.20
Bob * secret2 192.168.20.30
Carlos * secret3 192.168.20.40

Сеть

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:16:3E:DA:20:EF
IPADDR=185.72.246.252
NETMASK=255.255.255.0
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-eth0:228

DEVICE=eth0:228
ONBOOT=yes
IPADDR=185.72.246.228
NETMASK=255.255.255.255
MTU=1400

/etc/sysconfig/network-scripts/ifcfg-eth0:229

DEVICE=eth0:229
ONBOOT=yes
IPADDR=185.72.246.229
NETMASK=255.255.255.255
MTU=1400

/etc/sysconfig/network-scripts/ifcfg-eth0:xyz

DEVICE=eth0:xyz
ONBOOT=yes
IPADDR=185.72.246.xyz
NETMASK=255.255.255.255
MTU=1400

iptables

iptables -t nat -A POSTROUTING -s 192.168.20.30 -j SNAT --to-source 185.72.246.x
iptables -t nat -A POSTROUTING -s 192.168.20.30 -j SNAT --to-source 185.72.246.y
iptables -t nat -A POSTROUTING -s 192.168.20.30 -j SNAT --to-source 185.72.246.z

/sbin/iptables -t nat -A POSTROUTING -s 10.45.0.0/24 -o eth0 -j SNAT --to-source PUBLIC_IP1
/sbin/iptables -t nat -A POSTROUTING -s 10.45.1.0/24 -o eth0 -j SNAT --to-source PUBLIC_IP2

===== Бонусы и плюшки

Убрать маршрут по-умолчанию

Опция nodefaultroute заставляет pppd не устанавливать маршрут по-умолчанию через VPN сервер.

В файл /etc/ppp/pptpd-options добавляем nodefaultroute

Подключение VPN → Свойства → Сеть → Протокол интернета TCP/IP → Свойства → Дополнительно → Использовать основной шлюз удаленной сети (убрать галочку)

VPN connection → Properties → Networking → TCP/IPv4 → Properties → Advanced → Use default gateway on remote network

MTU

Часть сайтов у вас может отвечать на ping, но при этом в браузере они не открываются. WTF?! MTU!

А помните был такой провайдер MTU Intel :)

Правило Аркадия Паровозова должно (?) всё исправить

iptables -A FORWARD -i ppp+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Что делать если на сервере не изменяется размер MTU и остается равным 1396?

Через /etc/pptpd.conf и /etc/ppp/options.pptpd MTU не устанавливается.

Добавить в файл /etc/ppp/ip-up.local

ifconfig $1 mtu 1420

Как ограничить количество подключений для учетной записи (один логин один коннект)

Рабочий скрипт - http://poptop.sourceforge.net/dox/skwok/poptop_ads_howto_12.htm#oneconnection

Создаём два файла

/etc/ppp/auth-up

#!/bin/sh
# get the username/ppp line number from the parameters
PPPLINE=$1
USER=$2
# create the directory to keep pid files per user
mkdir -p /var/run/pptpd-users
# if there is a session already for this user, terminate the old one
if [ -f /var/run/pptpd-users/$USER ]; then
    kill -HUP `cat /var/run/pptpd-users/$USER`
    rm /var/run/pptpd-users/$USER
fi
# write down the username in the ppp line file
echo $USER > /var/run/pptpd-users/$PPPLINE.new

/etc/ppp/ip-up.local

#!/bin/sh
REALDEVICE=$1
# Get the username from the ppp line record file
USER=`cat /var/run/pptpd-users/$REALDEVICE.new`
# Copy the ppp line pid
cp "/var/run/$REALDEVICE.pid" /var/run/pptpd-users/$USER
# remove the ppp line record file
rm "/var/run/pptpd-users/$REALDEVICE.new"
# Reset/Flush iptables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# Flush end

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT

# Allow localhost traffic
iptables -A INPUT -i lo   -m state --state NEW  -j ACCEPT
iptables -A OUTPUT -o lo   -m state --state NEW  -j ACCEPT

# Allow server and internal network to go anyway
iptables -A INPUT  -s 10.0.0.0/24   -m state --state NEW  -j ACCEPT
iptables -A INPUT  -s 199.101.100.10   -m state --state NEW  -j ACCEPT
iptables -A OUTPUT  -m state --state NEW  -j ACCEPT

# Allow ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
$ uname -srv
Linux 2.6.18-407.el5 #1 SMP Wed Nov 11 08:12:41 EST 2015

$ cat /etc/redhat-release
CentOS release 5.11 (Final)

MTU

Firewall

iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
# Пропускать все пакеты с интерфейсов ppp*, например ppp0
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A OUTPUT -o ppp+ -j ACCEPT

# Пропускать входящие соединения на порт 1723 (PPTP)
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

# Пропускать все пакеты GRE
iptables -A INPUT -p 47 -j ACCEPT
iptables -A OUTPUT -p 47 -j ACCEPT

# Включить форвардинг IP
iptables -F FORWARD
iptables -A FORWARD -j ACCEPT

# Включить NAT для интерфейсов eth0 и ppp*
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE
#!/bin/bash

# hostwelt
# 23mar2016
# simple ruleset for pptpd

# reset iptables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# basic rules
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t mangle -A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT 
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT

iptables -A INPUT -i lo  -m state --state NEW  -j ACCEPT
iptables -A OUTPUT -o lo -m state --state NEW  -j ACCEPT

#iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
##iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu
#iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --clamp-mss-to-pmtu

#iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 0:65535 -j TCPMSS --clamp-mss-to-pmtu -i ppp+ 

# vpn pool
# localip  192.168.170.241-249
# publicip 185.53.170.241-249
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.170.241 -j SNAT --to-source 185.53.170.241
iptables -t nat -A POSTROUTING -s 192.168.170.242 -j SNAT --to-source 185.53.170.242
iptables -t nat -A POSTROUTING -s 192.168.170.243 -j SNAT --to-source 185.53.170.243
iptables -t nat -A POSTROUTING -s 192.168.170.244 -j SNAT --to-source 185.53.170.244
iptables -t nat -A POSTROUTING -s 192.168.170.245 -j SNAT --to-source 185.53.170.245
iptables -t nat -A POSTROUTING -s 192.168.170.246 -j SNAT --to-source 185.53.170.246
iptables -t nat -A POSTROUTING -s 192.168.170.247 -j SNAT --to-source 185.53.170.247
iptables -t nat -A POSTROUTING -s 192.168.170.248 -j SNAT --to-source 185.53.170.248
iptables -t nat -A POSTROUTING -s 192.168.170.249 -j SNAT --to-source 185.53.170.249

ppp0: ppp: compressor dropped pkt

Создаём файл /etc/ppp/ip-up.d/mppefixmtu.sh

#!/bin/sh
CURRENT_MTU="`ip link show $1 | grep -Po '(?<=mtu )([0-9]+)'`"
FIXED_MTU="`expr $CURRENT_MTU + 4`"
ip link set $1 mtu $FIXED_MTU

Ошибка: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=330973

pptpd[xxxxx]: Long config file line ignored

Добавляем пустую строку в конец файла /etc/pptpd.conf

Ошибка: http://sourceforge.net/p/poptop/bugs/35/

FreeRADIUS

Мониторинг

Better than nothing

Munin

pptpd-monitor

Python скрипт для отображения статистики по VPN сессиям

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/vpn_pptpd.txt · Последнее изменение: 2016/12/07 13:15 (внешнее изменение)