目标是经常更改具有多个接口和实时 ip 的机器上的默认传出源 ip。
我根据其文档使用 ip route replace default 并让脚本循环运行一段时间。它会在一段时间内很好地更改源 IP,但随后对机器的所有 Internet 访问都将丢失。必须从 Web 界面远程重新启动才能正常工作
有什么东西可能会阻止它稳定工作。我在不止一台服务器上试过这个?
以下是一个最小示例
# extract all currently active source ips except loopback
IPs="$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 |
awk '{ print $1}')"
read -a ip_arr <<<$IPs
# extract all currently active mac / ethernet addresses
Int="$(ifconfig | grep 'eth'| grep -v 'lo' | awk '{print $1}')"
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