Fix guest VM outbound networking and DNS resolution
Add resolv.conf to wrenn-init so guests can resolve DNS, and fix the host MASQUERADE rule to match vpeerIP (the actual source after namespace SNAT) instead of hostIP.
This commit is contained in:
@ -278,9 +278,11 @@ func CreateNetwork(slot *Slot) error {
|
||||
}
|
||||
|
||||
// MASQUERADE for outbound traffic from sandbox.
|
||||
// After SNAT inside the namespace, outbound packets arrive on the host
|
||||
// with source = vpeerIP, so we match on that (not hostIP).
|
||||
if err := iptablesHost(
|
||||
"-t", "nat", "-A", "POSTROUTING",
|
||||
"-s", fmt.Sprintf("%s/32", slot.HostIP.String()),
|
||||
"-s", fmt.Sprintf("%s/32", slot.VpeerIP.String()),
|
||||
"-o", defaultIface,
|
||||
"-j", "MASQUERADE",
|
||||
); err != nil {
|
||||
@ -314,7 +316,7 @@ func RemoveNetwork(slot *Slot) error {
|
||||
)
|
||||
iptablesHost(
|
||||
"-t", "nat", "-D", "POSTROUTING",
|
||||
"-s", fmt.Sprintf("%s/32", slot.HostIP.String()),
|
||||
"-s", fmt.Sprintf("%s/32", slot.VpeerIP.String()),
|
||||
"-o", defaultIface,
|
||||
"-j", "MASQUERADE",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user