什么可以防止频繁切换具有多个接口的机器的默认源 ip
What could prevent frequently switching default source ip of a machine with several interfaces
目标是经常更改具有多个接口和实时 ip 的计算机上的默认传出源 ip。
我根据其文档使用 ip route replace default 并让脚本 运行 循环一段时间。它会在一段时间内很好地更改源 IP,但随后所有对机器的互联网访问都将丢失。它必须从网络界面远程重启才能正常工作
有什么东西可能会阻止它稳定工作吗?我在不止一台服务器上试过这个?
下面是一个最小的例子
# extract all currently active source ips except loopback
IPs="$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 |
awk '{ print }')"
read -a ip_arr <<<$IPs
# extract all currently active mac / ethernet addresses
Int="$(ifconfig | grep 'eth'| grep -v 'lo' | awk '{print }')"
read -a eth_arr <<<$Int
ip_len=${#ip_arr[@]}
eth_len=${#eth_arr[@]}
i=0;
e=0;
while(true); do
#ip route replace 0.0.0.0 dev eth0:1 src 192.168.1.18
route_cmd="ip route replace 0.0.0.0 dev ${eth_arr[e]} src ${ip_arr[i]}"
echo $route_cmd
eval $route_cmd
sleep 300
(i++)
(e++)
if [ $i -eq $ip_len ]; then
i=0;
e=0;
echo "all ips exhausted - starting from first again"
# break;
fi
done
我想发表评论,但由于我的积分不够,所以不会发表评论。
考虑:
- 再次改变 运行 之前的延迟时间会改变它失败之前的迭代次数吗?
- 每次更改时导出 ifconfig 和路由,以查看随着时间的推移是否有明显不同。也许对它进行一些基本测试(ping、nslookup 等)基本上,找到它究竟出了什么问题。还将您发送的命令导出到日志文件(每次更改的文本文件?)以查看它们的变化,看看在 x 次迭代后是否有些不同。
- 什么连接丢失了?传入?外向?具体应用?
- 你说你use/do这个在其他服务器上没有问题?
- IP 是否:静态(/etc/network/interfaces)、bootp/DHCP、半静态(bootp/DHCP 服务器服务,基于 MAC 地址),如果由bootp/DHCP,租期是多少?
关于最后一句话:
bootp/dhcp 将提供 x 持续时间的 IP。说是60分钟。一半时间后,如果它可以保留 IP,它会 "check" 使用 bootp/dhcp 服务器,并再次将租约延长到 60 分钟,这可能意味着在 ifconfig 上进行小的重新配置(甚至可能同时你的剧本的时间?)。
hth
目标是经常更改具有多个接口和实时 ip 的计算机上的默认传出源 ip。
我根据其文档使用 ip route replace default 并让脚本 运行 循环一段时间。它会在一段时间内很好地更改源 IP,但随后所有对机器的互联网访问都将丢失。它必须从网络界面远程重启才能正常工作
有什么东西可能会阻止它稳定工作吗?我在不止一台服务器上试过这个?
下面是一个最小的例子
# extract all currently active source ips except loopback
IPs="$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 |
awk '{ print }')"
read -a ip_arr <<<$IPs
# extract all currently active mac / ethernet addresses
Int="$(ifconfig | grep 'eth'| grep -v 'lo' | awk '{print }')"
read -a eth_arr <<<$Int
ip_len=${#ip_arr[@]}
eth_len=${#eth_arr[@]}
i=0;
e=0;
while(true); do
#ip route replace 0.0.0.0 dev eth0:1 src 192.168.1.18
route_cmd="ip route replace 0.0.0.0 dev ${eth_arr[e]} src ${ip_arr[i]}"
echo $route_cmd
eval $route_cmd
sleep 300
(i++)
(e++)
if [ $i -eq $ip_len ]; then
i=0;
e=0;
echo "all ips exhausted - starting from first again"
# break;
fi
done
我想发表评论,但由于我的积分不够,所以不会发表评论。
考虑:
- 再次改变 运行 之前的延迟时间会改变它失败之前的迭代次数吗?
- 每次更改时导出 ifconfig 和路由,以查看随着时间的推移是否有明显不同。也许对它进行一些基本测试(ping、nslookup 等)基本上,找到它究竟出了什么问题。还将您发送的命令导出到日志文件(每次更改的文本文件?)以查看它们的变化,看看在 x 次迭代后是否有些不同。
- 什么连接丢失了?传入?外向?具体应用?
- 你说你use/do这个在其他服务器上没有问题?
- IP 是否:静态(/etc/network/interfaces)、bootp/DHCP、半静态(bootp/DHCP 服务器服务,基于 MAC 地址),如果由bootp/DHCP,租期是多少?
关于最后一句话: bootp/dhcp 将提供 x 持续时间的 IP。说是60分钟。一半时间后,如果它可以保留 IP,它会 "check" 使用 bootp/dhcp 服务器,并再次将租约延长到 60 分钟,这可能意味着在 ifconfig 上进行小的重新配置(甚至可能同时你的剧本的时间?)。
hth