mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
fix: always add static routes for metadata server (#20807)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -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])
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user