Skip to content

Commit 8b0834d

Browse files
author
Santhosh Manohar
authored
Merge pull request #1396 from mrjana/lb
Add a narrower SNAT rule for LB egress
2 parents e404052 + 52c022a commit 8b0834d

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

service_linux.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ func invokeFWMarker(path string, vip net.IP, fwMark uint32, ingressPorts []*Port
647647

648648
cmd := &exec.Cmd{
649649
Path: reexec.Self(),
650-
Args: append([]string{"fwmarker"}, path, vip.String(), fmt.Sprintf("%d", fwMark), addDelOpt, ingressPortsFile, eIP.IP.String()),
650+
Args: append([]string{"fwmarker"}, path, vip.String(), fmt.Sprintf("%d", fwMark), addDelOpt, ingressPortsFile, eIP.String()),
651651
Stdout: os.Stdout,
652652
Stderr: os.Stderr,
653653
}
@@ -719,7 +719,13 @@ func fwMarker() {
719719
}
720720

721721
if addDelOpt == "-A" {
722-
ruleParams := strings.Fields(fmt.Sprintf("-m ipvs --ipvs -j SNAT --to-source %s", os.Args[6]))
722+
eIP, subnet, err := net.ParseCIDR(os.Args[6])
723+
if err != nil {
724+
logrus.Errorf("Failed to parse endpoint IP %s: %v", os.Args[6], err)
725+
os.Exit(9)
726+
}
727+
728+
ruleParams := strings.Fields(fmt.Sprintf("-m ipvs --ipvs -d %s -j SNAT --to-source %s", subnet, eIP))
723729
if !iptables.Exists("nat", "POSTROUTING", ruleParams...) {
724730
rule := append(strings.Fields("-t nat -A POSTROUTING"), ruleParams...)
725731
rules = append(rules, rule)

0 commit comments

Comments
 (0)