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
我怎样才能用这个创建一个 Puppet 脚本?可以部署到同一类型的多台机器上的脚本 – CentOS 6
编辑: 增加悬赏以获得工作示例
sudo ip route change default via $ip_address dev eth0 initcwnd 12
答案1
根据 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
答案2
如果您使用 DHCP 获取互联网地址(您的问题建议这样做),那么您可以在配置接口/etc/dhcp/dhclient-exit-hooks
后使用它来运行 shell 命令dhclient
。您将可以访问 dhclient 提供的许多变量,包括$router
。您可以使用它来运行:
ip route change default via $router dev $interface initcwnd 12
您可以使用常规 Puppetfile
资源安装此脚本:
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
脚本会运行,您可以使用它来运行命令。在这种情况下,您只需在 中的接口配置中获取默认网关的地址(并且您的 Puppet资源将安装)。/sbin/ifup-local
ip
/etc/sysconfig/network-scripts/ifcfg-eth0
file
/sbin/ifup-local
答案3
sysctl
这篇文章中介绍了这一方面:使用 Puppet 设置 sysctl.conf 参数。
编辑:您使用的是 CentOS,因此请记住您需要使这些路由持久化...更安全的方法是在文件中进行更改、验证,然后重新启动网络接口吗?/etc/sysconfig/network-scripts/route-ethX
由于您使用的是via
语法,因此这假定使用。该ip route
命令似乎是您的目标,因为您想要更改初始拥塞窗口 (initcwnd)。我会认真地将其分为另一个选项,因为设置默认网关本身应该由 OS 网络脚本/kickstart/build 过程处理。
现在有一个完全不同的解决方案:
我喜欢 Puppet 的某些东西。网络配置和 sysctl 值不在其中。使用 EL6 系统,您可以使用tuned-adm 框架以简单一致的方式即时进行这些系统更改。我管理的服务器有时需要 30 多个sysctl
更改sysfs
才能投入生产。我过去手动管理,然后使用 Puppet……但使用 EL6,我创建了一个调整轮廓使用所有必要的调整和脚本,使用 Puppet 管理配置文件及其分发,并tuned
使用 Puppet 控制守护进程。
鉴于此,只需将ip
脚本和sysctl
值移到自定义配置文件中并从那里开始即可。更干净。