Заранее извиняюсь что наверное в сотый раз задаю этот вопрос но честно штудировал интернеты сутки и ничего полезного для моей ситуации не нашел.Есть сервер с чистым свежим дебианом, настроенным iptables'ом и SNAT'ом, больше ничего серьезного нет.
Три интерфейса:
eth0 (смотрит в локалку провайдера 10.96.76.xxx)
eth1 (смотрит в мою домашнюю локалку 192.168.0.ххх)
ppp0 (VPN соединение посредством pptp-linux, внешний белый IP 88.84.xxx.xxx).Два компа из домашней локалки пользуются всеми благами которые дает им сервер, и все это происходит с неимоверно низкой скоростью. Сервер старый двуядерный атлон 1600 Мгц.
По последним замерам скорость напрямую без сервера составила 70-80 Мегабит на вход и 50-60 на выход. Скорость при сборке системы с сервером составила 3-4(!!!) Мегабита вход и 0,5-1 Мегабит выход.
Интересная деталь в том что локальной сетью провайдера удается пользоваться без проблем, скорости великолепные, те же 80 мегабит тянет в легкую, правда загрузка процессора на сервере 15-20%. Все собрано проводами, никакого вайфая итд итп.
Что здесь происходит? Я специально отказался от маскарадинга в пользу производительности SNAT'a но толку никакого, в чем затык?
Заранее спасибо!
## Конфиг ##
*filter
:FORWARD ACCEPT [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT
-A INPUT -s vpn.xxxxxxx.ru -i eth0 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -j DROP
-A INPUT -s 192.168.0.0/24 -i ppp0 -j DROP
-A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
-A INPUT -p udp -m udp --dport 1024:65535 --sport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type parameter-problem -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 123 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 61000:61999 -j ACCEPT
-A INPUT -p udp -m udp --dport 61000:61999 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 65000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 65001 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport auth -j ACCEPT
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -d 10.96.0.0/16 -j SNAT --to-source 10.96.76.134
## Ниже две подсети доступные из локальной сети провайдера но имеющие свои белые внешники, всякие там ДНСы итд.
-A POSTROUTING -s 192.168.0.0/24 -d 80.252.136.64/28 -j SNAT --to-source 10.96.76.134
-A POSTROUTING -s 192.168.0.0/24 -d 80.252.130.250/31 -j SNAT --to-source 10.96.76.134
-A POSTROUTING -s 192.168.0.0/24 -d 10.10.122.64/27 -j SNAT --to-source 10.96.76.134
-A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 88.84.xxx.xxx
-A PREROUTING -p tcp -m tcp --dport 61010 -j DNAT --to-destination 192.168.0.2:61010
-A PREROUTING -p udp -m udp --dport 61011 -j DNAT --to-destination 192.168.0.2:61011
-A PREROUTING -p tcp -m tcp --dport 61020 -j DNAT --to-destination 192.168.0.2:61020
COMMIT
## Конфиг ##
правила нормальные , соответственно нужно искать косяк в
1. pptp как работает? debug? dump?
2. маршруты как прописаны? ip ru sh ; ip r
3. проверить mtu везде.
4. может пров по ttl'у скорость режет?
5. ну и железо на всякий пожарный проверить
Чтож поехали, pptp работает через pptp-linux.zsrv:/# pon vpn debug dump
##Dump##
pppd options in effect:
debug # (from command line)
holdoff 5 # (from /etc/ppp/peers/vpn)
persist # (from /etc/ppp/peers/vpn)
maxfail 0 # (from /etc/ppp/peers/vpn)
dump # (from command line)
noauth # (from /etc/ppp/options.pptp)
name konev # (from /etc/ppp/peers/vpn)
remotename PPTP # (from /etc/ppp/peers/vpn)
pty pptp 10.10.122.67 --nolaunchpppd # (from /etc/ppp/peers/vpn)
crtscts # (from /etc/ppp/options)
asyncmap 0 # (from /etc/ppp/options)
lcp-echo-failure 4 # (from /etc/ppp/options)
lcp-echo-interval 30 # (from /etc/ppp/options)
hide-password # (from /etc/ppp/options)
ipparam VPN2 # (from /etc/ppp/peers/vpn)
noipdefault # (from /etc/ppp/peers/vpn)
defaultroute # (from /etc/ppp/peers/vpn)
proxyarp # (from /etc/ppp/options)
nobsdcomp # (from /etc/ppp/options.pptp)
nodeflate # (from /etc/ppp/options.pptp)
nomppe # (from /etc/ppp/peers/vpn)
nomppe-128 # (from /etc/ppp/peers/vpn)
nomppe-stateful # (from /etc/ppp/peers/vpn)
noipx # (from /etc/ppp/options)
##Dump##zsrv:/# poff vpn
##Debug##
Sep 21 15:59:11 zsrv pppd[3270]: using channel 6
Sep 21 15:59:12 zsrv pppd[3270]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x27e267db> <pcomp> <accomp>]
Sep 21 15:59:14 zsrv pppd[3270]: rcvd [LCP ConfReq id=0x1 <auth chap MD5> <magic 0x918bab47>]
Sep 21 15:59:14 zsrv pppd[3270]: sent [LCP ConfAck id=0x1 <auth chap MD5> <magic 0x918bab47>]
Sep 21 15:59:15 zsrv pppd[3270]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x27e267db> <pcomp> <accomp>]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x27e267db> <pcomp> <accomp>]
Sep 21 15:59:15 zsrv pppd[3270]: sent [LCP EchoReq id=0x0 magic=0x27e267db]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [CHAP Challenge id=0x1 <0a1c07de416ab715069bd0f92fa82364>, name = "vpn.xxxxxxx.ru"]
Sep 21 15:59:15 zsrv pppd[3270]: sent [CHAP Response id=0x1 <d44c28db55d6536a61955c389eb531b2>, name = "name"]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [CHAP Success id=0x1 ""]
Sep 21 15:59:15 zsrv pppd[3270]: sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [IPCP ConfReq id=0x1 <addr 10.255.245.22>]
Sep 21 15:59:15 zsrv pppd[3270]: sent [IPCP ConfAck id=0x1 <addr 10.255.245.22>]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
Sep 21 15:59:15 zsrv pppd[3270]: sent [IPCP ConfReq id=0x2 <addr 0.0.0.0>]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [IPCP ConfNak id=0x2 <addr 88.84.xxx.xxx>]
Sep 21 15:59:15 zsrv pppd[3270]: sent [IPCP ConfReq id=0x3 <addr 88.84.xxx.xxx>]
Sep 21 15:59:15 zsrv pppd[3270]: rcvd [IPCP ConfAck id=0x3 <addr 88.84.xxx.xxx>]
Sep 21 15:59:15 zsrv pppd[3270]: Script /etc/ppp/ip-up started (pid 3279)
Sep 21 15:59:15 zsrv pppd[3270]: Script /etc/ppp/ip-up finished (pid 3279), status = 0x0
Sep 21 16:01:49 zsrv pppd[3270]: Script pptp 10.10.122.67 --nolaunchpppd finished (pid 3271), status = 0x0
Sep 21 16:01:49 zsrv pppd[3270]: Script /etc/ppp/ip-down started (pid 3297)
Sep 21 16:01:49 zsrv pppd[3270]: Script /etc/ppp/ip-down finished (pid 3297), status = 0x0
##Debug##
Маршрутыzsrv:/# ip ru sh
0: from all lookup local
32766: from all lookup main
32767: from all lookup defaultzsrv:/# ip r
10.255.245.22 dev ppp0 proto kernel scope link src 88.84.xxx.xxx
10.10.122.67 via 10.96.76.1 dev eth0 src 10.96.76.134
80.252.130.250/31 via 10.96.76.1 dev eth0
80.252.136.64/28 via 10.96.76.1 dev eth0
10.10.122.64/27 via 10.96.76.1 dev eth0
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.1
10.96.76.0/22 dev eth0 proto kernel scope link src 10.96.76.134
10.96.0.0/16 via 10.96.76.1 dev eth0
169.254.0.0/16 dev eth1 scope link metric 1000
default dev ppp0 scope linkzsrv:/# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.255.245.22 * 255.255.255.255 UH 0 0 0 ppp0
vpn.veganet.ru 10.96.76.1 255.255.255.255 UGH 0 0 0 eth0
80.252.130.250 10.96.76.1 255.255.255.254 UG 0 0 0 eth0
80.252.136.64 10.96.76.1 255.255.255.240 UG 0 0 0 eth0
10.10.122.64 10.96.76.1 255.255.255.224 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
10.96.76.0 * 255.255.252.0 U 0 0 0 eth0
10.96.0.0 10.96.76.1 255.255.0.0 UG 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth1
default * 0.0.0.0 U 0 0 0 ppp0
Как проверить везде mtu?
Врядли это железо, в локалке скорость шикарная.
Врядли провайдер режет скорость по ttl'у, напрямую ведь без сервера скорость тоже шикарная.
Что-то мне подсказывает что это действительно у меня криво поднят VPN, только понятия не имею где...
>Как проверить везде mtu?
>Врядли это железо, в локалке скорость шикарная.
>Врядли провайдер режет скорость по ttl'у, напрямую ведь без сервера скорость тоже
>шикарная.
>Что-то мне подсказывает что это действительно у меня криво поднят VPN, только
>понятия не имею где...ifconfig пакажет mtu
MTU 1500 везде кроме интерфейса lo, там около 16000
Прошли еще почти сутки, изучил man pppd, перебрал все параметры, почистил конфиги, расставил по местам итд итп.Результат нулевой, единственное что я заметил так это то что тест на speedtest.net сначала разгоняется почти до 30 mbt/s на треть секунды потом падает резко до 2,5-2,6 mbt/s и держится так какое-то время, потом мееедленно разгоняется до целых 3,5 mbt/s. Аплоад в процессе разгоняется с 0,6 mbt/s до 1,1 mbt/s. Навскидку 8 из 10 замеров показывали такие результаты, остальные с небольшими отклонениями, иногда с очень большими, иногда все внезапно взлетало до 25-30 mbit/s и держалось так весь тест, это какая-то мистика. :(((
###Конфиг options.pptp###
# Net Config
lock
defaultroute
noipdefault
#proxyarp
noipx# Authentication
noauth
hide-password# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# (you may need to remove these refusals if the server is not using MPPE)
#refuse-pap
#refuse-eap
#refuse-chap
#refuse-mschap
nomppe
nomppe-128
nomppe-stateful# Compression
nobsdcomp
nodeflate# Reconnect if down
persist
maxfail 0
holdoff 5# Flow control
crtscts
local
#modem
asyncmap 0#mtu 3000
#mru 3000# Peer check
lcp-echo-failure 4
lcp-echo-interval 30
###Конфиг options.pptp######Конфиг /peers/provider###
pty "pptp vpn.xxxxxxx.ru --nolaunchpppd"
name vasyapupkin
#ipparam provider
file /etc/ppp/options.pptp
###Конфиг /peers/provider###Я плохо понял что дают переменные
# Flow control
crtscts
local
#modem
asyncmap 0
Может дело в них хотя пробовал менять, разницы почти нет, просто хочу знать что они дают.
попробуй поставить прокси-сервер на машине и посмотреть какая скорость будет через него.если скорость будет высокая... значит провайдер на vpn сервере вставляет костыли. заодно проверь какая нагрузка на pptp и pppd при максимальном трафике. посмотри на user/sys проверь iowait
железо какое? pci сетевухи чьих будут?
попробуйте поставить mtu поменьше.
Сервер старый ноутбук :D
Железо естессно не интеловское и под таки задачи ниочем но я таки не понимаю причем здесь оно ведь в локальной сети скорости отличные.Прокси ставить не подребовалось, только что впилил на него апач который с яндексовского зеркала скачивался не более 200 кбайт/с, естессно напрямую через апт, тормозит именно VPN.
Загрузка процессора при максимальном траффике через VPN составила не более 5%, при скачивании в локальной сети со скоростью 8-10 мбайт/c составила 10-15%.
Что значит "посмотри на user/sys" и как "проверить iowait"?
mtu ставил на 500, скорость только упала
>[оверквотинг удален]
>Прокси ставить не подребовалось, только что впилил на него апач который с
>яндексовского зеркала скачивался не более 200 кбайт/с, естессно напрямую через апт,
>тормозит именно VPN.
>
>Загрузка процессора при максимальном траффике через VPN составила не более 5%, при
>скачивании в локальной сети со скоростью 8-10 мбайт/c составила 10-15%.
>
>Что значит "посмотри на user/sys" и как "проверить iowait"?
>
>mtu ставил на 500, скорость только упалаили я чего-то не понял, или сказано небуло .... а сколько провайдер должен предоставлять по VPN?
>[оверквотинг удален]
>>
>>Загрузка процессора при максимальном траффике через VPN составила не более 5%, при
>>скачивании в локальной сети со скоростью 8-10 мбайт/c составила 10-15%.
>>
>>Что значит "посмотри на user/sys" и как "проверить iowait"?
>>
>>mtu ставил на 500, скорость только упала
>
>или я чего-то не понял, или сказано небуло .... а сколько провайдер
>должен предоставлять по VPN?mtu таким маленьким делать не стоило
>[оверквотинг удален]
>Прокси ставить не подребовалось, только что впилил на него апач который с
>яндексовского зеркала скачивался не более 200 кбайт/с, естессно напрямую через апт,
>тормозит именно VPN.
>
>Загрузка процессора при максимальном траффике через VPN составила не более 5%, при
>скачивании в локальной сети со скоростью 8-10 мбайт/c составила 10-15%.
>
>Что значит "посмотри на user/sys" и как "проверить iowait"?
>
>mtu ставил на 500, скорость только упалаа ещё вывод tc -s qdisc
Провайдер должен выдавать до 100 мегабит/сек, у меня лимитированный тариф.qdisc pfifo_fast 0: dev ppp0 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 4630229 bytes 23357 pkt (dropped 298, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0Опа, скинуто 298 пакетов, из-за этого? где копать?
>Провайдер должен выдавать до 100 мегабит/сек, у меня лимитированный тариф.
>
>qdisc pfifo_fast 0: dev ppp0 root bands 3 priomap 1 2
>2 2 1 2 0 0 1 1 1 1 1
>1 1 1
> Sent 4630229 bytes 23357 pkt (dropped 298, overlimits 0 requeues 0)
>
> rate 0bit 0pps backlog 0b 0p requeues 0
>
>Опа, скинуто 298 пакетов, из-за этого? где копать?а можно таки все интерфейсы увидеть?
zsrv:/usr/server# tc -s qdisc
qdisc pfifo_fast 0: dev eth0 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 1704042735 bytes 1312569 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo_fast 0: dev eth1 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 173358739 bytes 2129259 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo_fast 0: dev ppp0 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 930908 bytes 5057 pkt (dropped 1, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
Мать перемать, tracertzsrv:/usr/server# tracert ya.ru
traceroute to ya.ru (93.158.134.8), 30 hops max, 40 byte packets
1 10.255.245.22 (10.255.245.22) 0.864 ms 0.723 ms 0.629 ms
2 10.222.255.251 (10.222.255.251) 0.742 ms 0.820 ms 0.735 ms
3 gtw-197-1.provider.ru (88.84.197.1) 309.743 ms 309.035 ms 308.962 ms
4 80.252.128.53 (80.252.128.53) 308.852 ms 308.777 ms 308.694 ms
5 ix2-m9.yandex.net (193.232.244.93) 308.604 ms 308.528 ms 308.405 ms
6 silicon-vlan901.yandex.net (77.88.56.125) 308.321 ms 304.715 ms 304.372 ms
7 odin-vlan4.yandex.net (213.180.210.187) 304.093 ms 301.286 ms 301.018 ms
8 ya.ru (93.158.134.8) 300.376 ms 304.395 ms 304.113 msКак такое может проявляться при соединении с линуха и не проявляется при соединении с винды? Ведь как я уже упоминал напрямую из под винды подключаем ВПН и получаем скорость 80 мбит/с. Может всетаки что-то не так в настройках? Или таки провайдер косячит? Но почему именно из под линуха?
Ходил к админам нашего провайдера, показали мне как с их ноута с убунтой все великолепно пашет по VPNЧтож, поставил Убунту 9.04 х64, прямо в гуйне настроил все как подобает, скорость не возросла. Единственное что приходит на ум это поставить х32 и пробовать в ней. Дебиан тоже был х64, может это проблема архитектуры, помнится были у меня подобные проблемы в стародавние времена экспериментов с убунтой.
Бесполезно...
Есть еще идеи? Или может другие клиенты VPN?
>Бесполезно...
>Есть еще идеи? Или может другие клиенты VPN?Вообщето проблема извесная - pptp реальзация очень не стобильная под линукс, причем нестобильность зависит от сетевухи в большей степени. Замечено что при небольших скоростях все нормально, при больших начинают дропаться пакеты на pptp - если включите debug то в логах увидите
выход
1) переберать сетевухи (на интоловских такого не наблюдал ни разу)
2) попробовать альтернативные драййвера
3) спросить у прова - может есть возможность вместо pptp l2tp - там таких проблем не замечено
>Бесполезно...
>Есть еще идеи? Или может другие клиенты VPN?Как вариант freebsd + mpd.