Not sure if this is known changed behavior in F24, but:
For the longest time I had /etc/sysconfig/network-scripts/eno2 specify:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=wan0
UUID=71e6ac4b-c693-4c20-aa0d-e1a63b7373fe
ONBOOT=yes
IPADDR1=216.254.115.102
PREFIX1=24
IPADDR2=216.27.136.223
PREFIX2=24
HWADDR=0C:C4:7A:32:C1:83
IPADDR=216.254.115.190
GATEWAY=216.254.115.1
PREFIX=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
This host has three IP addresses, and up until now the default IP address
for outgoing IP traffic was always 216.254.115.190, specified by IPADDR.
It appears that, right now, all of my outbound traffic now appears to come
from one of the other IP addresses, 216.254.115.102.
This is true even if the outgoing socket explicitly binds to 216.254.115.190:
Sending mail to gmail, with an explicit bind(), strace shows:
13232 bind(5, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6,
"::ffff:216.254.115.190", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0},
28) = 0
13232 fcntl(5, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
13232 getsockopt(5, SOL_SOCKET, SO_TYPE, [1], [4]) = 0
13232 connect(5, {sa_family=AF_INET6, sin6_port=htons(25),
inet_pton(AF_INET6, "::ffff:173.194.206.26", &sin6_addr), sin6_flowinfo=0,
sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
13232 select(6, NULL, [5], NULL, {60, 0}) = 1 (out [5], left {59, 975901})
13232 getsockopt(5, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
13232 getsockname(5, {sa_family=AF_INET6, sin6_port=htons(41394),
inet_pton(AF_INET6, "::ffff:216.254.115.190", &sin6_addr), sin6_flowinfo=0,
sin6_scope_id=0}, [28]) = 0
13232 select(6, [5], [], NULL, {300, 0}) = 1 (in [5], left {299, 975360})
13232 read(5, "220
mx.google.com ESMTP 92si8123707qkx.29 - gsmtp\r\n", 512)
= 51
Gmail still shows 216.254.115.102 as the received-from IP address. I note
that getsockname() insists that the socket is 216.254.115.190
This host is using masquerading, with firewalld. I suspect that this is
firewalld's doing.
ip addr's output:
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
link/ether 0c:c4:7a:32:c1:83 brd ff:ff:ff:ff:ff:ff
inet 216.27.136.223/24 brd 216.27.136.255 scope global eno2
valid_lft forever preferred_lft forever
inet 216.254.115.102/24 brd 216.254.115.255 scope global eno2
valid_lft forever preferred_lft forever
inet 216.254.115.190/24 brd 216.254.115.255 scope global secondary eno2
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:fe32:c183/64 scope link
valid_lft forever preferred_lft forever
Anyone knows what could be the reason for this, I'd like to have
216.254.115.190 as the default externally-visible IP address.