У меня есть два изменения в ip route
& sysctl
которые отключают медленный старт tcp. Вот как я это делаю
ip route show
Запишите строку, начинающуюся со значения default.
Возьмите IP из строки по умолчанию и запустите
sudo ip route change default via $ip_address dev eth0 initcwnd 12
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0
Как я могу создать из этого марионеточный сценарий? Тот, который можно развернуть на многих машинах одного типа - CentOS 6
Редактировать: Добавлена награда за рабочий пример для
sudo ip route change default via $ip_address dev eth0 initcwnd 12
В sysctl
сторона была освещена в этом посте: Установите параметры sysctl.conf с помощью Puppet.
Куклы пример для сети также использует Авгий.
Изменить: вы используете CentOS, поэтому помните, что вам нужно сделать эти маршруты постоянными ... Является ли более безопасным подход внести изменения в файл, проверить, а затем перезапустить сетевой интерфейс? Это предполагает /etc/sysconfig/network-scripts/route-ethX
использовать, так как вы используете via
синтаксис. В ip route
кажется вашей целью, поскольку вы хотите изменить начальное окно перегрузки (initcwnd). Я бы серьезно разделил это на другой вариант, потому что установка шлюза по умолчанию сама по себе должна обрабатываться сетевыми скриптами ОС / процессом кикстарта / сборкой.
Теперь о совершенно другом решении:
Мне нравится Puppet за некоторые вещи. Сетевые конфигурации и значения sysctl среди них отсутствуют. С системами EL6 у вас есть возможность использовать настроенный ADM framework чтобы вносить эти изменения в систему на лету простым и последовательным образом. Серверов, которыми я управляю, иногда требуется 30+ sysctl
и sysfs
изменения перед запуском в производство. Раньше я управлял этим вручную, затем с помощью Puppet ... но с EL6 я создаю настроен профиль со всеми необходимыми настройками и скриптами, управляйте профилями и их распространением с помощью Puppet и контролируйте tuned
демон с помощью Puppet.
Учитывая это, просто переместите свой ip
сценарий и sysctl
значения в настраиваемом профиле и переходите оттуда. Намного чище.
Если вы получаете свой интернет-адрес с помощью DHCP (что предлагается в вашем вопросе), вы можете использовать /etc/dhcp/dhclient-exit-hooks
запускать команды оболочки после dhclient
настраивает ваш интерфейс. У вас будет доступ к ряду переменных, предоставляемых dhclient, включая $router
. Вы можете использовать это для запуска:
ip route change default via $router dev $interface initcwnd 12
Вы бы установили этот скрипт с помощью обычного Puppet file
ресурс:
file { '/etc/dhcp/dhclient-exit-hooks':
owner => root,
group => root,
mode => 0755,
source => 'puppet:///.../dhclient-exit-hooks',
}
И содержимое файла, вероятно, будет выглядеть примерно так:
#!/bin/sh
if [ "$interface" = eth0 ]; then
ip route change default via ${new_routers%% *} dev $interface initcwnd 12
fi
Если ты не используя DHCP, вы можете сделать нечто подобное. Нормальный ifup
скрипт запускается /sbin/ifup-local
после настройки интерфейса, и вы можете использовать это для запуска ip
команда. В этом случае вы можете получить адрес шлюза по умолчанию, просто указав его в конфигурации интерфейса в /etc/sysconfig/network-scripts/ifcfg-eth0
(и ваша марионетка file
ресурс установит /sbin/ifup-local
).
Выход из ответа larsks, если у вас есть статические IP-адреса, поместите его в / sbin / ifup-local
#!/bin/sh
GATEWAY=`ip route| awk '/^def/{print $3}'`
DEFGWDEV=`ip route| awk '/^def/{print $5}'`
if [ "$1" = $DEFGWDEV ]; then
ip route change default via $GATEWAY dev $DEFGWDEV initcwnd 12
fi