Bug 29351 - Неправильное определение MTU
Summary: Неправильное определение MTU
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: vpnc-script (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-09-11 15:32 MSK by Michael A. Kangin
Modified: 2014-06-18 19:22 MSK (History)
3 users (show)

See Also:


Attachments
у меня нарисовалось (544 bytes, patch)
2013-09-11 16:56 MSK, Michael A. Kangin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael A. Kangin 2013-09-11 15:32:37 MSK
В скрипте есть такая строчка
MTU=$(($($IPROUTE route get "$VPNGATEWAY" | sed -ne 's/^.*mtu \([[:digit:]]\+\).*$/\1/p') - 88))

У нас на новых ядрах из неё получается -88.

Потому что на центоси какой-нибудь:
# ip route get 8.8.8.8
8.8.8.8 via 7.7.7.7 dev eth0  src 7.7.7.6 
    cache  mtu 1500 advmss 1460 hoplimit 64

а у нас 
# ip route get 8.8.8.8
8.8.8.8 via 7.7.7.7 dev eth0  src 7.7.7.6 
    cache 

информации о mtu в выводе ip route get нету.
Comment 1 Andrey Cherepanov 2013-09-11 15:38:51 MSK
Может, надо на iproute2 перевешать?
Comment 2 Nick S. Grechukh 2013-09-11 16:15:33 MSK
> Потому что на центоси какой-нибудь:
> # ip route get 8.8.8.8
> 8.8.8.8 via 7.7.7.7 dev eth0  src 7.7.7.6 
>     cache  mtu 1500 advmss 1460 hoplimit 64

Что за центось?

[root@SZKX001 ~]# ip ro get 8.8.8.8
8.8.8.8 via 85.17.225.126 dev eth0  src 85.17.225.98 
    cache  mtu 1500 advmss 1460 hoplimit 64

[root@SZKX001 ~]# rpm -qf /sbin/ip; uname -r
iproute-2.6.32-20.el6.i686
2.6.32-279.11.1.el6.i686
----

[ec2-user@cygnus ~]$ sudo ip ro get 8.8.8.8
8.8.8.8 via 10.58.197.1 dev eth0  src 10.58.197.183 
    cache 
[ec2-user@cygnus ~]$ rpm -qf /sbin/ip; uname -r
iproute-3.6.0-8.16.amzn1.i686
3.4.48-45.46.amzn1.i686
----

[altlinux@eeelive ~]$ sudo ip ro get 8.8.8.8
8.8.8.8 via 10.12.30.254 dev wlan0  src 10.12.30.102 
    cache 

[altlinux@eeelive ~]$ rpm -qf /sbin/ip ; uname -r
iproute2-3.2.0-alt1
3.6.0-pure-emerald-alt1
Comment 3 Michael A. Kangin 2013-09-11 16:25:18 MSK
(В ответ на комментарий №2)
> > Потому что на центоси какой-нибудь:
> > # ip route get 8.8.8.8
> > 8.8.8.8 via 7.7.7.7 dev eth0  src 7.7.7.6 
> >     cache  mtu 1500 advmss 1460 hoplimit 64
> 
> Что за центось?

# rpm -qf /sbin/ip; uname -r; cat /etc/redhat-release 
iproute-2.6.18-11.el5
2.6.18-238.12.1.el5.centos.plus
CentOS release 5.6 (Final)

# rpm -qf /sbin/ip; uname -r; cat /etc/redhat-release
iproute-2.6.32-20.el6.x86_64
2.6.32-279.19.1.el6.x86_64
CentOS release 6.3 (Final)
Comment 4 Andrey Cherepanov 2013-09-11 16:30:07 MSK
На ядре >2.6.32 уже другое. Но mtu - свойство интерфейса. Нужно заменить на двухступенчатый подход: по ip r get <gateway> определяем интерфейс, а по ip link - MTU на нём.
Comment 5 Nick S. Grechukh 2013-09-11 16:33:57 MSK
> 2.6.18-238.12.1.el5.centos.plus
> 2.6.32-279.19.1.el6.x86_64

Вот и я о чём.
Comment 6 Andrey Cherepanov 2013-09-11 16:39:28 MSK
На ядре >2.6.32 уже другое. Но mtu - свойство интерфейса. Нужно заменить на двухступенчатый подход: по ip r get <gateway> определяем интерфейс, а по ip link - MTU на нём.
Comment 7 Andrey Cherepanov 2013-09-11 16:40:09 MSK
Задублировалось. Вот исправление:

MTU=$(($($IPROUTE link show `$IPROUTE route get "$VPNGATEWAY"|sed -ne 's/^.* dev \([[:alnum:]]\+\) .*$/\1/p'`|sed -ne 's/^.*mtu \([[:digit:]]\+\).*$/\1/p')-88))
Comment 8 Michael A. Kangin 2013-09-11 16:51:16 MSK
(В ответ на комментарий №7)
> Задублировалось. Вот исправление:
> 
> MTU=$(($($IPROUTE link show `$IPROUTE route get "$VPNGATEWAY"|sed -ne 's/^.*
> dev \([[:alnum:]]\+\) .*$/\1/p'`|sed -ne 's/^.*mtu
> \([[:digit:]]\+\).*$/\1/p')-88))

лучше не :alnum: а :graph: например.
а то интефейс br-inet в пичали.
Comment 9 Michael A. Kangin 2013-09-11 16:55:11 MSK
(В ответ на комментарий №7)
> Задублировалось. Вот исправление:
> 
> MTU=$(($($IPROUTE link show `$IPROUTE route get "$VPNGATEWAY"|sed -ne 's/^.*
> dev \([[:alnum:]]\+\) .*$/\1/p'`|sed -ne 's/^.*mtu
> \([[:digit:]]\+\).*$/\1/p')-88))

и -o лучше для ip
а то многострочный вывод и не работает
Comment 10 Michael A. Kangin 2013-09-11 16:56:09 MSK
Created attachment 5935 [details]
у меня нарисовалось
Comment 11 Alexey Shabalin 2014-06-18 19:22:59 MSK
исправлено в 0.5.3-alt5