Multiples ip address on interface. I want to specify one of them for output

Cubox asked:

I ran curl on curlmyip.com, and I got the wrong output ip address.
My systemd service file is:

[Unit]
Description=Wired Networking
Wants=network.target dibbler-client.service
Before=network.target dibbler-client.service

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/sbin/ip link set dev ${interface} up
ExecStart=/sbin/ip addr add ${address}/24 dev ${interface}
ExecStart=/sbin/ip addr add ${failover}/32 dev ${interface}
ExecStart=/sbin/ip route add default via ${gateway} src ${failover}
ExecStart=/sbin/ip -6 addr add ${addressv6}/64 dev ${interface}

ExecStop=/sbin/ip addr flush dev ${interface}
ExecStop=/sbin/ip -6 addr flush dev ${interface}
ExecStop=/sbin/ip link set dev ${interface} down

[Install]
WantedBy=multi-user.target

And variables are:

interface=eno1
address=88.190.15.135
address6=2001:bc8:300a:dead::b12d
failover=212.83.129.104
broadcast=88.190.15.255
gateway=88.190.15.1

Now, ip addr give me:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether b8:ac:6f:94:e2:4e brd ff:ff:ff:ff:ff:ff
    inet 88.190.15.135/24 scope global eno1
       valid_lft forever preferred_lft forever
    inet 212.83.129.104/32 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::baac:6fff:fe94:e24e/64 scope link
       valid_lft forever preferred_lft forever

and ip route:

default via 88.190.15.1 dev eno1  src 212.83.129.104
88.190.15.0/24 dev eno1  proto kernel  scope link  src 88.190.15.135

curlmyip.com tell me that the output ip address is 88.190.15.135. How can I change this output address and make it 212.83.129.104?

EDIT: tested to change the src of the route to the gateway… No changes.

Thanks!

My answer:


It appears your provider is playing some dirty tricks with IP routing. The second IP address you are using is on a completely different network. Your dedibox is on AS12322, while your other IP address is registered to Tiscali on AS12876. This seems to work because the involved service providers are making it work.

Anyway, most programs that can make network connections have an option that lets you specify the source IP address. For the curl command line, that option is --interface.

curl --interface 212.83.129.104 http://curlmyip.com/

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.