Назад | Перейти на главную страницу

Проблемы с маршрутизацией на определенные домены при настройке PPTP VPN

Мы боролись с некоторой проблемой сети / маршрутизации с VPN на основе PPTPD, когда клиенты не могут получить доступ к определенным интернет-доменам / IP-адресам через VPN. Например, пользователь может просматривать hxxp: //google.com, но не hxxp: //microsoft.com.

Настройка выглядит следующим образом:

Клиент (такая же проблема на Windows и Android, другие не тестировал) (ip: x.x.x.x) -> Интернет -> (y.y.y.y) dd-wrt router (192.168.1.1) -> Ubuntu Server 10.10 с PPTPD (192.168.1.125).

eirik @ woserv: ~ $ cat /etc/pptpd.conf | grep -v '#'

option /etc/ppp/pptpd-options
logwtmp
localip 192.168.1.125
remoteip 192.168.1.230-240

eirik @ woserv: ~ $ cat / etc / ppp / pptpd-options | grep -v '#'

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1
proxyarp
nodefaultroute
debug
lock
auth
nobsdcomp
noipx
mtu 1490
mru 1490

Правила iptable (в /etc/rc.local) и проверенные загружаются с помощью iptables -L

#!/bin/sh

# Flush all rules

iptables -F

iptables -X

iptables -Z

# Allow all VPN stuff

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

iptables -A INPUT -p 47 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT

iptables -A OUTPUT -p 47 -j ACCEPT

iptables -A FORWARD -i ppp+ -o eth0 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT

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

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

exit 0

Мы включили сквозную передачу PPTP, IPSEC и L2TP на маршрутизаторе dd-wrt (в разделе «Безопасность» -> «Сквозная передача VPN»). Кроме того, мы перенаправили 1723 и 47 на 192.168.1.125.

VPN-соединение в Windows настраивается с помощью «Использовать шлюз по умолчанию в удаленной сети» на IPv4 и использует MS-CHAP v2. Если клиенты обращаются к hxxp: //www.whatismyip.com/, сообщается правильный IP-адрес VPN (г.г.г.г), а не их обычный IP-адрес в Интернете, x.x.x.x.

На данный момент мы определили следующие проблемные области:

microsoft.com
support.microsoft.com
no.yahoo.com
answers.yahoo.com
nrk.no
imgur.com

(И работая над описанием этой проблемы, я обнаружил, что Не удалось загрузить http://w.pastebin.ca/pb-g.gz.js когда я пытался получить доступ к hxxp: //pastebin.ca через VPN)

Если клиенты пытаются открыть эти веб-страницы, когда они используют VPN, они получают тайм-аут (Google Chrome Dev Tools в разделе «Сеть» говорит «Ожидает» для запросов, пока они не истекут). Иногда Chrome сообщает об ошибке: «Ошибка 101 (net :: ERR_CONNECTION_RESET): соединение было сброшено». Другие службы (кроме http / https 80/443 также не работают).

Работают большинство других сайтов, например hxxp: //google.com и hxxp: //bing.com. Проблемы одинаковы для многих разных окон и клиентов Android из разных мест. Никаких прокси не задействовано. Отключение брандмауэра Windows и любого антивирусного программного обеспечения ничего не дает.

tracert от клиентов дает разные результаты для разных доменов, но они кажутся несколько согласованными между VPN и VPN, вот несколько примеров.

Если я зажгу lynx http://microsoft.com непосредственно на сервере Linux, на котором запущен PPTPD, загружается нормально. То же и с другими сайтами ...

Любые идеи?

(извините за jsfiddle со ссылками tracert, не смог опубликовать так много ссылок здесь как новый пользователь на ServerFault)

Поскольку вы изменили MTU по умолчанию, это может быть причиной. Попробуйте добавить в свой брандмауэр следующее правило, при необходимости отрегулируйте:

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu

РЕДАКТИРОВАТЬ: изменено правило, чтобы вставить себя первым в цепочке.

Множественные проблемы

  1. / и т.д. / ppp / pptpd-параметры

    nodefaultroute
    

    Но Windows настроена с «Использовать шлюз по умолчанию в удаленной сети». Вышеупомянутый вариант следует удалить.

  2. Одна и та же сеть с обеих сторон NAT

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

    Сервер PPTP имеет IP-адрес LAN 192.168.1.125, клиентам PPTP назначены 192.168.1.230-240, то же 192.168.1.0/24 на обеих сторонах NAT. Не уверен, что действительно работает, частично работает, но выглядит проблематично.

    Кроме того, PPTP-сервер уже внутри LAN маршрутизатор DD-WRT уже выполняет NAT. NAT на сервере PPTP не нужен. Удалите указанное выше правило.

  3. Проверьте / proc / sys / net / ipv4 / ip_forward

    cat /proc/sys/net/ipv4/ip_forward должен вернуться 1. Если нет, добавьте следующие строки как 2-е строки rc.local

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  4. Проверьте сеть клиента PPTP

    Убедитесь, что PPTP-клиент локальный / LAN IP не использует 192.168.1.0/24. Их необходимо изменить, иначе маршрутизация VPN может не работать.