fix: always add static routes for metadata server (#20807)

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
Jian Qiu
2024-07-17 10:06:55 +08:00
committed by GitHub
parent d23148559f
commit dd89bf8558
7 changed files with 30 additions and 11 deletions
+4 -2
View File
@@ -906,6 +906,7 @@ func (d *sDebianLikeRootFs) DeployNetworkingScripts(rootFs IDiskPartition, nics
// ToServerNics(nics)
allNics, bondNics := convertNicConfigs(nics)
nicCnt := len(allNics) - len(bondNics)
mainNic := getMainNic(allNics)
var mainIp string
@@ -953,7 +954,7 @@ func (d *sDebianLikeRootFs) DeployNetworkingScripts(rootFs IDiskPartition, nics
cmds.WriteString(fmt.Sprintf(" mtu %d\n", nicDesc.Mtu))
}
var routes = make([][]string, 0)
routes = netutils2.AddNicRoutes(routes, nicDesc, mainIp, len(nics))
routes = netutils2.AddNicRoutes(routes, nicDesc, mainIp, nicCnt)
for _, r := range routes {
cmds.WriteString(fmt.Sprintf(" up route add -net %s gw %s || true\n", r[0], r[1]))
cmds.WriteString(fmt.Sprintf(" down route del -net %s gw %s || true\n", r[0], r[1]))
@@ -1348,6 +1349,7 @@ func (r *sRedhatLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics
return errors.Wrap(err, "enableBondingModule")
}
}
nicCnt := len(allNics) - len(bondNics)
mainNic := getMainNic(allNics)
var mainIp string
@@ -1416,7 +1418,7 @@ func (r *sRedhatLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics
cmds.WriteString("\n")
}
var routes = make([][]string, 0)
routes = netutils2.AddNicRoutes(routes, nicDesc, mainIp, len(nics))
routes = netutils2.AddNicRoutes(routes, nicDesc, mainIp, nicCnt)
var rtbl strings.Builder
for _, r := range routes {
rtbl.WriteString(r[0])
+8 -4
View File
@@ -32,8 +32,9 @@ func NewNetplanConfig(allNics []*types.SServerNic, bondNics []*types.SServerNic,
func newNetplanNetwork(allNics []*types.SServerNic, bondNics []*types.SServerNic, mainIp string) *netplan.Network {
network := netplan.NewNetwork()
nicCnt := len(allNics) - len(bondNics)
for _, nic := range allNics {
nicConf := getNetplanEthernetConfig(nic, false, mainIp)
nicConf := getNetplanEthernetConfig(nic, false, mainIp, nicCnt)
if nicConf == nil {
continue
@@ -69,7 +70,7 @@ func newNetplanNetwork(allNics []*types.SServerNic, bondNics []*types.SServerNic
network.AddEthernet(sn.Name, nicConf)
}
netConf := getNetplanEthernetConfig(bondNic, true, mainIp)
netConf := getNetplanEthernetConfig(bondNic, true, mainIp, nicCnt)
if netConf.Mtu == 0 {
netConf.Mtu = defaultMtu
@@ -84,7 +85,7 @@ func newNetplanNetwork(allNics []*types.SServerNic, bondNics []*types.SServerNic
return network
}
func getNetplanEthernetConfig(nic *types.SServerNic, isBond bool, mainIp string) *netplan.EthernetConfig {
func getNetplanEthernetConfig(nic *types.SServerNic, isBond bool, mainIp string, nicCnt int) *netplan.EthernetConfig {
var nicConf *netplan.EthernetConfig
if !isBond && (nic.TeamingMaster != nil || nic.TeamingSlaves != nil) {
@@ -107,9 +108,12 @@ func getNetplanEthernetConfig(nic *types.SServerNic, isBond bool, mainIp string)
}
}
var routeArrs = make([][]string, 0)
routeArrs = netutils2.AddNicRoutes(routeArrs, nic, mainIp, nicCnt)
var routes []*netplan.Route
for _, route := range nic.Routes {
for _, route := range routeArrs {
routes = append(routes, &netplan.Route{
To: route[0],
Via: route[1],
+8 -2
View File
@@ -123,6 +123,12 @@ func TestNewNetplanConfig(t *testing.T) {
},
},
Mtu: 1500,
Routes: []*netplan.Route{
&netplan.Route{
To: "169.254.169.254/32",
Via: "0.0.0.0",
},
},
},
Interfaces: []string{
"eth0",
@@ -249,11 +255,11 @@ func TestNewNetplanConfig(t *testing.T) {
},
},
}
for _, c := range cases {
for i, c := range cases {
allNics, bondNics := convertNicConfigs(c.nics)
netplanConfig := NewNetplanConfig(allNics, bondNics, c.mainIp)
if jsonutils.Marshal(netplanConfig).String() != jsonutils.Marshal(c.want).String() {
t.Errorf("nics: %s want: %s got: %s", jsonutils.Marshal(c.nics), jsonutils.Marshal(c.want).PrettyString(), jsonutils.Marshal(netplanConfig).PrettyString())
t.Errorf("nics %d: %s want: %s got: %s", i, jsonutils.Marshal(c.nics), jsonutils.Marshal(c.want).PrettyString(), jsonutils.Marshal(netplanConfig).PrettyString())
}
}
}
+3 -1
View File
@@ -99,6 +99,8 @@ func (r *sSuseLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics []
}
}
nicCnt := len(allNics) - len(bondNics)
var dnsSrv []string
mainNic := getMainNic(allNics)
var mainIp string
@@ -144,7 +146,7 @@ func (r *sSuseLikeRootFs) deployNetworkingScripts(rootFs IDiskPartition, nics []
}
var routes = make([][]string, 0)
routes = netutils2.AddNicRoutes(routes, nicDesc, mainIp, len(nics))
routes = netutils2.AddNicRoutes(routes, nicDesc, mainIp, nicCnt)
if len(nicDesc.Gateway) > 0 && nicDesc.Ip == mainIp {
routes = append(routes, []string{
"default",
+1 -1
View File
@@ -185,7 +185,7 @@ func (s *SGuestDHCPServer) getGuestConfig(
if !strings.HasPrefix(strings.ToLower(osName), "win") {
route = append(route, []string{"0.0.0.0/0", nicdesc.Gateway})
}
route = append(route, []string{"169.254.169.254/32", nicdesc.Gateway})
route = append(route, []string{"169.254.169.254/32", "0.0.0.0"})
}
route = netutils2.AddNicRoutes(route, nicdesc, mainIp, len(guestNics))
conf.Routes = route
+5
View File
@@ -171,6 +171,11 @@ func AddNicRoutes(routes [][]string, nicDesc *types.SServerNic, mainIp string, n
}
}
}
if nicDesc.Ip == mainIp {
// always add 169.254.169.254 for default NIC
routes = addRoute(routes, "169.254.169.254/32", "0.0.0.0")
}
return routes
}
+1 -1
View File
@@ -456,7 +456,7 @@ func generateDhcpOptions(ctx context.Context, guestnetwork *agentmodels.Guestnet
var (
network = guestnetwork.Network
dhcpMac = mac.HashSubnetDhcpMac(network.Id)
mdIp = "169.254.169.254"
mdIp = "169.254.169.254/32"
ocDhcpRef = fmt.Sprintf("dhcp/%s/%s", guestnetwork.GuestId, guestnetwork.Ifname)
)