Проблема с маршрутизацией VPN сессий
Имеется локальная сетка с Windows XP клиентами
шлюзом стоит Gentoo Linux
Есть необходимость VPN соединений с нескольких клиентских машин на один внешний адрес (Windows Server)
требуемые модули включены в ядро и необходимые правила NAT прописаны
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
iptables -A FORWARD -i ${LAN} -o ${WAN} -p gre -j ACCEPT
iptables -A FORWARD -i ${WAN} -o ${LAN} -p gre -j ACCEPT
Настроенное VPN соединение с одного клиента проходит и работает нормально
При попытке подключения одновременно с другой клиентской машины затыкается на проверке логина/пароля (не возвращаются ответные GRE пакеты)
Возможность VPN соединения с другой машины появляется минут через 10 после разрыва VPN сессии на первой клиентской машине.
Все вышесказанное для случая с VPN соединениями на один и тот же внешний адрес.
При попытках соединения на другие адреса точно так же работает только одна сессия на всю клиенскую сетку.
Ставлю роутером вместо линуха 3Com-вскую коробочку, она все пробрасывает нормально.
В чем грабли и как их победить?
- Для комментирования войдите или зарегистрируйтесь
tcpdump proto gre
Попытка соединения с первого клиента и сразу разрыв содениения руками
где 85.85.85.85 IP адрес сервера VPN
13:20:30.418359 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 0, length 37: LCP, Conf-Request (0x01), id 0, length 23
13:20:30.435423 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 0, ack 0, length 45: LCP, Conf-Request (0x01), id 0, length 27
13:20:30.435498 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 1, length 37: LCP, Conf-Ack (0x02), id 0, length 23
13:20:30.440139 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 1, ack 1, length 29: LCP, Conf-Nack (0x03), id 0, length 11
13:20:30.460406 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 2, ack 1, length 46: LCP, Conf-Request (0x01), id 1, length 28
13:20:30.461735 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 2, ack 2, length 46: LCP, Conf-Ack (0x02), id 1, length 28
13:20:30.463545 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 3, length 32: LCP, Ident (0x0c), id 1, length 20
13:20:30.463978 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 4, length 38: LCP, Ident (0x0c), id 2, length 26
13:20:30.481626 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 3, ack 2, length 46: CHAP, Challenge (0x01), id 0, Value c41234f4b906540a53057a[|chap]
13:20:30.531885 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 5, ack 3, length 85: CHAP, Response (0x02), id 0, Value 9b8587c162b0ab0787b763[|chap]
13:20:30.573437 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 4, ack 5, length 64: CHAP, Success (0x03), id 0, Msg S=7AF828549A[|chap]
13:20:30.586418 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 5, length 20: unknown PPP protocol (0xc029) 0x0000: 0101 0006 0102
13:20:30.589546 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 6, ack 5, length 24: unknown PPP protocol (0xc029) 0x0000: 0201 0006 0102
13:20:30.606404 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 6, ack 6, length 24: unknown PPP protocol (0xc029) 0x0000: 0301 0006 0102
13:20:30.606486 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 7, length 24: unknown ctrl-proto (0x80fd), Conf-Request (0x01), id 3, length 12
13:20:30.606563 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 8, length 24: IPCP, Conf-Request (0x01), id 4, length 12
13:20:30.611691 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 7, ack 8, length 28: unknown ctrl-proto (0x80fd), Conf-Request (0x01), id 3, length 12
13:20:30.612577 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 8, length 48: IPCP, Conf-Request (0x01), id 4, length 36
13:20:30.621531 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 9, length 24: unknown ctrl-proto (0x80fd), Conf-Nack (0x03), id 3, length 12
13:20:30.621555 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 10, length 24: IPCP, Conf-Ack (0x02), id 4, length 12
13:20:30.631428 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 9, ack 7, length 28: unknown ctrl-proto (0x80fd), Conf-Nack (0x03), id 3, length 12
13:20:30.631509 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 10, ack 8, length 40: IPCP, Conf-Reject (0x04), id 4, length 24
13:20:30.631584 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 11, ack 9, length 28: unknown ctrl-proto (0x80fd), Conf-Request (0x01), id 5, length 12
13:20:30.633073 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 11, ack 11, length 28: unknown ctrl-proto (0x80fd), Conf-Request (0x01), id 5, length 12
13:20:30.634086 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 12, length 30: IPCP, Conf-Request (0x01), id 6, length 18
13:20:30.634116 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 13, length 24: unknown ctrl-proto (0x80fd), Conf-Ack (0x02), id 5, length 12
13:20:30.653428 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 12, ack 11, length 28: unknown ctrl-proto (0x80fd), Conf-Ack (0x02), id 5, length 12
13:20:30.653513 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 13, ack 12, length 34: IPCP, Conf-Nack (0x03), id 6, length 18
13:20:30.674773 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 14, ack 13, length 34: IPCP, Conf-Request (0x01), id 7, length 18
13:20:30.703493 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 14, ack 14, length 34: IPCP, Conf-Ack (0x02), id 7, length 18
13:20:30.774975 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 15, ack 14, length 61: compressed PPP data
13:20:30.787651 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 16, length 57: compressed PPP data
13:20:30.803810 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 17, length 57: compressed PPP data
13:20:30.810373 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 18, length 57: compressed PPP data
13:20:30.847198 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 19, length 57: compressed PPP data
13:20:30.847223 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 20, length 57: compressed PPP data
13:20:31.041385 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 21, length 57: compressed PPP data
13:20:31.117259 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 22, length 150: compressed PPP data
13:20:31.121561 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 15, ack 22, length 146: compressed PPP data
13:20:31.730441 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 23, length 57: compressed PPP data
13:20:31.852563 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 24, length 102: compressed PPP data
13:20:32.156593 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 25, length 55: compressed PPP data
13:20:32.506517 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 26, length 963: compressed PPP data
13:20:32.506546 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 27, length 420: compressed PPP data
13:20:32.615916 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 28, length 102: compressed PPP data
13:20:32.716123 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 29, length 55: compressed PPP data
13:20:32.765574 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 30, length 963: compressed PPP data
13:20:33.349425 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 31, length 963: compressed PPP data
13:20:33.351141 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 32, length 102: compressed PPP data
13:20:33.463758 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 33, length 57: compressed PPP data
13:20:34.101244 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 34, length 102: compressed PPP data
13:20:34.558115 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 35, length 963: compressed PPP data
13:20:34.577579 IP 192.168.1.100 > 85.85.85.85: GREv1, call 6966, seq 36, length 32: LCP, Term-Request (0x05), id 8, length 18
13:20:34.585050 IP 85.85.85.85 > 192.168.1.100: GREv1, call 49152, seq 16, ack 36, length 36: LCP, Term-Ack (0x06), id 8, length 18
И тут же попытка соедниения со второго клиента
13:21:39.708155 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 0, length 37: LCP, Conf-Request (0x01), id 0, length 23
13:21:41.698519 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 1, length 37: LCP, Conf-Request (0x01), id 1, length 23
13:21:44.699222 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 2, length 37: LCP, Conf-Request (0x01), id 2, length 23
13:21:48.700590 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 3, length 37: LCP, Conf-Request (0x01), id 3, length 23
13:21:52.699833 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 4, length 37: LCP, Conf-Request (0x01), id 4, length 23
13:21:56.701253 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 5, length 37: LCP, Conf-Request (0x01), id 5, length 23
13:22:00.700464 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 6, length 37: LCP, Conf-Request (0x01), id 6, length 23
13:22:04.701553 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 7, length 37: LCP, Conf-Request (0x01), id 7, length 23
13:22:08.703284 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 8, length 37: LCP, Conf-Request (0x01), id 8, length 23
13:22:12.702959 IP 192.168.1.105 > 85.85.85.85: GREv1, call 15244, seq 9, length 37: LCP, Conf-Request (0x01), id 9, length 23
Это надо пологать tcpdump на
Это надо пологать tcpdump на внешнем ифейсе? Тогда вопрос к вашему Windows Server почему он не отвечает..
izbushka написал(а):Это надо
если зароутить через 3COM-коробочку то он прекрасно отвечает. тут трабла именно в маршрутизации какая то
конфиг iptables полностью
конфиг iptables полностью запости куда-нибудь на pastebin.com, посмотрю. Один gre разрешить - этого мало
Нейтральность - высшее достижение сознания!
полный iptables save
полный iptables save тут http://pastebin.com/m7611abc0
tcpdump -i eth1 proto gre
первый был дамп по внутреннему интерфейсу (tcpdump proto gre) по дефолту eth0
сейчас посмотрел на внешнем (tcpdump -i eth1 proto gre). пакеты от второго клиента туда вообще не попадают
Проблема решена
Проблема решена. Всем спасибо.
В ядре все таки нехватало модуля nf_nat_pptp (он же ip_nat_pptp)
для устранения вышеуказанной проблемы этого модуля одного вполне достаточно
ip_gre тут даже не нужен
Опция становится доступна после включения
Networking support --> Networking options --> Network packet filtering framework (Netfilter) --> Advanced netfilter configuration
Networking support --> Networking options --> Network packet filtering framework (Netfilter) --> Core Netfilter Configuration --> PPtP protocol support