You've got something else going on.

I did a brand new install of Debian stable, created in a KVM VM using
the following command:
virt-install -n test --os-type=Linux --os-variant=debiansqueeze
--ram=512 --vcpus=1 --disk path=test.img,bus=virtio,size=10 --graphics
none --location
http://ftp.us.debian.org/debian/dists/testing/main/installer-amd64/
--network bridge:br0 --network bridge:br1 --console
pty,target_type=serial --extra-args 'console=ttyS0,115200n8 serial'

I installed tcpdump and mtr (the 0.87 version from stable), and
configured the two network interfaces with static IPs, with a default
gateway on the first interface.

root@test:~# mtr --version
mtr 0.87
root@test:~# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
    inet 192.168.9.29/24 brd 192.168.9.255 scope global ens2
       valid_lft forever preferred_lft forever
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
    inet 192.168.10.29/24 brd 192.168.10.255 scope global ens3
       valid_lft forever preferred_lft forever
root@test:~# ip route
default via 192.168.9.1 dev ens2 onlink
192.168.9.0/24 dev ens2 proto kernel scope link src 192.168.9.29
192.168.10.0/24 dev ens3 proto kernel scope link src 192.168.10.29

I ran mtr in one window, using -a to specify the IP for ens3. In other
windows, I ran tcpdump on ens2 and ens3:

root@test:~# mtr -c 1 --report -a 192.168.10.29 1.2.3.4
Start: Thu Nov 23 07:51:36 2017
HOST: test                        Loss%   Snt   Last   Avg  Best  Wrst StDev

root@test:~# tcpdump -ni ens2 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens2, link-type EN10MB (Ethernet), capture size 262144 bytes
07:51:37.025564 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 59520, length 44
07:51:37.126989 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 59776, length 44
07:51:37.228430 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 60032, length 44
07:51:37.328767 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 60288, length 44
07:51:37.429117 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 60544, length 44
07:51:37.529475 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 60800, length 44
07:51:37.629855 IP 192.168.10.29 > 1.2.3.4: ICMP echo request, id 22275,
seq 61056, length 44

root@test:~# tcpdump -ni ens3 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes

The packets egress via ens2 using the 192.168.10.29 IP.

Bottom line: If you want to do this, you need to set up a separate
routing table in Linux and you need to configure rules to use that
routing table. This is not a regression in mtr.

Reply via email to