Skip to content

Commit ba242ba

Browse files
B #7691: loosen inherited ARP strictness in netns
to allow cross-subnet ARP replies. Network namespaces can inherit strict ARP policies (where arp_ignore is greater than 0) from the host's default configurations. When this strictness is inherited, it breaks cross-subnet ARP resolution. Specifically, the namespace silently drops and fails to reply to the VM's cross-subnet ARP requests for local endpoints, such as the 169.254.16.9. This PR explicitly loosens the inherited ARP strictness by forcing arp_ignore=0 inside the namespace. By applying this to both all and the specific interface, it guarantees the namespace will successfully reply to the VM's ARP requests for local IPs.
1 parent 31cdddf commit ba242ba

5 files changed

Lines changed: 8 additions & 4 deletions

File tree

share/pkgs/sudoers/centos/opennebula

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Cmnd_Alias ONE_LXC = /usr/bin/mount, /usr/bin/umount, /usr/bin/bindfs, /usr/sbin
99
Cmnd_Alias ONE_MARKET = /usr/lib/one/sh/create_container_image.sh
1010
Cmnd_Alias ONE_NET = /usr/sbin/iptables, /usr/sbin/ip6tables, /usr/sbin/ipset, /usr/sbin/ip link *, /usr/sbin/ip neighbour *, /usr/sbin/ip route *, /usr/sbin/ip rule *, /usr/sbin/ip tuntap *, /usr/sbin/nft, /var/tmp/one/vnm/tproxy, /usr/sbin/bridge vlan *
1111
Cmnd_Alias ONE_SCSI = /usr/sbin/blockdev, /usr/sbin/multipath, /usr/sbin/multipathd, /usr/sbin/iscsiadm, /usr/bin/tee, /usr/bin/find, /usr/bin/cat /etc/iscsi/initiatorname.iscsi
12-
Cmnd_Alias ONE_NETNS = /usr/sbin/ip netns add *, /usr/sbin/ip netns delete *, /usr/sbin/ip netns pids *, /var/tmp/one/vnm/ip_netns_exec ip address *, /var/tmp/one/vnm/ip_netns_exec ip link *, /var/tmp/one/vnm/ip_netns_exec ip -j link show *, /var/tmp/one/vnm/ip_netns_exec ip route *
12+
Cmnd_Alias ONE_NETNS = /usr/sbin/ip netns add *, /usr/sbin/ip netns delete *, /usr/sbin/ip netns pids *, /var/tmp/one/vnm/ip_netns_exec ip address *, /var/tmp/one/vnm/ip_netns_exec ip link *, /var/tmp/one/vnm/ip_netns_exec ip -j link show *, /var/tmp/one/vnm/ip_netns_exec ip route *, /var/tmp/one/vnm/ip_netns_exec sysctl -w net.ipv4.conf.*.arp_ignore=0
1313
Cmnd_Alias ONE_OVS = /usr/bin/ovs-ofctl, /usr/bin/ovs-vsctl, /usr/bin/ovs-appctl
1414
Cmnd_Alias ONE_MEM = /usr/sbin/sysctl vm.drop_caches=3 vm.compact_memory=1
1515
Cmnd_Alias ONE_VGPU = /var/tmp/one/vgpu

share/pkgs/sudoers/debian/opennebula

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Cmnd_Alias ONE_LXC = /usr/bin/mount, /usr/bin/umount, /usr/bin/bindfs, /usr/sbin
99
Cmnd_Alias ONE_MARKET = /usr/lib/one/sh/create_container_image.sh
1010
Cmnd_Alias ONE_NET = /usr/sbin/iptables, /usr/sbin/ip6tables, /usr/sbin/ipset, /usr/sbin/ip link *, /usr/sbin/ip neighbour *, /usr/sbin/ip route *, /usr/sbin/ip rule *, /usr/sbin/ip tuntap *, /usr/sbin/nft, /var/tmp/one/vnm/tproxy, /usr/sbin/bridge vlan *
1111
Cmnd_Alias ONE_SCSI = /usr/sbin/blockdev, /usr/sbin/multipath, /usr/sbin/multipathd, /usr/sbin/iscsiadm, /usr/bin/tee, /usr/bin/find, /usr/bin/cat /etc/iscsi/initiatorname.iscsi
12-
Cmnd_Alias ONE_NETNS = /usr/sbin/ip netns add *, /usr/sbin/ip netns delete *, /usr/sbin/ip netns pids *, /var/tmp/one/vnm/ip_netns_exec ip address *, /var/tmp/one/vnm/ip_netns_exec ip link *, /var/tmp/one/vnm/ip_netns_exec ip -j link show *, /var/tmp/one/vnm/ip_netns_exec ip route *
12+
Cmnd_Alias ONE_NETNS = /usr/sbin/ip netns add *, /usr/sbin/ip netns delete *, /usr/sbin/ip netns pids *, /var/tmp/one/vnm/ip_netns_exec ip address *, /var/tmp/one/vnm/ip_netns_exec ip link *, /var/tmp/one/vnm/ip_netns_exec ip -j link show *, /var/tmp/one/vnm/ip_netns_exec ip route *, /var/tmp/one/vnm/ip_netns_exec sysctl -w net.ipv4.conf.*.arp_ignore=0
1313
Cmnd_Alias ONE_OVS = /usr/bin/ovs-ofctl, /usr/bin/ovs-vsctl, /usr/bin/ovs-appctl
1414
Cmnd_Alias ONE_MEM = /usr/sbin/sysctl vm.drop_caches=3 vm.compact_memory=1
1515
Cmnd_Alias ONE_VGPU = /var/tmp/one/vgpu

share/pkgs/sudoers/suse/opennebula

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Cmnd_Alias ONE_LXC = /usr/bin/mount, /usr/bin/umount, /usr/bin/bindfs, /usr/sbin
99
Cmnd_Alias ONE_MARKET = /usr/lib/one/sh/create_container_image.sh
1010
Cmnd_Alias ONE_NET = /usr/sbin/iptables, /usr/sbin/ip6tables, /usr/sbin/ipset, /usr/sbin/ip link *, /usr/sbin/ip neighbour *, /usr/sbin/ip route *, /usr/sbin/ip rule *, /usr/sbin/ip tuntap *, /usr/sbin/nft, /var/tmp/one/vnm/tproxy, /usr/sbin/bridge vlan *
1111
Cmnd_Alias ONE_SCSI = /usr/sbin/blockdev, /usr/sbin/multipath, /usr/sbin/multipathd, /sbin/iscsiadm, /usr/bin/tee, /usr/bin/find, /usr/bin/cat /etc/iscsi/initiatorname.iscsi
12-
Cmnd_Alias ONE_NETNS = /usr/sbin/ip netns add *, /usr/sbin/ip netns delete *, /usr/sbin/ip netns pids *, /var/tmp/one/vnm/ip_netns_exec ip address *, /var/tmp/one/vnm/ip_netns_exec ip link *, /var/tmp/one/vnm/ip_netns_exec ip -j link show *, /var/tmp/one/vnm/ip_netns_exec ip route *
12+
Cmnd_Alias ONE_NETNS = /usr/sbin/ip netns add *, /usr/sbin/ip netns delete *, /usr/sbin/ip netns pids *, /var/tmp/one/vnm/ip_netns_exec ip address *, /var/tmp/one/vnm/ip_netns_exec ip link *, /var/tmp/one/vnm/ip_netns_exec ip -j link show *, /var/tmp/one/vnm/ip_netns_exec ip route *, /var/tmp/one/vnm/ip_netns_exec sysctl -w net.ipv4.conf.*.arp_ignore=0
1313
Cmnd_Alias ONE_OVS = /usr/bin/ovs-ofctl, /usr/bin/ovs-vsctl, /usr/bin/ovs-appctl
1414
Cmnd_Alias ONE_MEM = /usr/sbin/sysctl vm.drop_caches=3 vm.compact_memory=1
1515
Cmnd_Alias ONE_VGPU = /var/tmp/one/vgpu

share/sudoers/sudoers.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ def initialize(lib_location)
4444
'/var/tmp/one/vnm/ip_netns_exec ip address *',
4545
'/var/tmp/one/vnm/ip_netns_exec ip link *',
4646
'/var/tmp/one/vnm/ip_netns_exec ip -j link show *',
47-
'/var/tmp/one/vnm/ip_netns_exec ip route *'
47+
'/var/tmp/one/vnm/ip_netns_exec ip route *',
48+
'/var/tmp/one/vnm/ip_netns_exec sysctl -w net.ipv4.conf.*.arp_ignore=0'
4849
],
4950
:LVM => [
5051
'lvcreate', 'lvremove', 'lvs', 'vgdisplay', 'lvchange', 'lvscan', 'lvextend',

src/vnm_mad/remotes/lib/tproxy.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ def self.enable_tproxy(nic, endpoints)
9898

9999
ip_netns_exec(brdev, "ip route replace default dev #{brdev}a")
100100

101+
ip_netns_exec(brdev, 'sysctl -w net.ipv4.conf.all.arp_ignore=0')
102+
ip_netns_exec(brdev, "sysctl -w net.ipv4.conf.#{brdev.tr('.', '/')}a.arp_ignore=0")
103+
101104
# Prevent ARP requests from being propagated to other HV machines.
102105
# It reduces network traffic and ensures that the closest HV handles
103106
# proxied packets.

0 commit comments

Comments
 (0)