I have following setup:
ip addr
:
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 01:12:23:34:45:5f brd ff:ff:ff:ff:ff:ff
inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.xxx scope global ens4
valid_lft forever preferred_lft forever
inet 192.168.0.2/24 scope global ens4:1
valid_lft forever preferred_lft forever
inet 192.168.0.3/24 scope global secondary ens4:2
valid_lft forever preferred_lft forever
I would like to have all traffic from 192.168.0.2
destined to 192.168.0.3
to show as if the source was 192.168.0.3
.
The reason is I have speciffic configuration on postgres that I cannot change. This postgres is only accepting connections when source is 192.168.0.3
, so if source becomes 192.168.0.2
then connection will be refused.
The above questions is result of answer received here: How to add ip route to route traffic through interface when destination is also that interface (it is not possible to change source IP address with static routes when two aliases are configured within the same network)
The answer to following question seems to be related to my question although it does not result in rule being added: https://unix.stackexchange.com/questions/243451/iptables-change-local-source-address-if-destination-address-matches
I already tried following nat rules:
iptables -t nat -A POSTROUTING -o ens4 -j MASQUERADE
iptables -A FORWARD -i ens4 --source 192.168.0.2/32 -o 192.168.0.3 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens4 --source 192.168.0.2/32 -o 192.168.0.3 -j ACCEPT
Above derived from here: http://www.revsys.com/writings/quicktips/nat.html
127.0.0.1
?192.168.0.3
and never to127.0.0.1
(I have no control over this configuration, it's part of bigger setup that I'm not maintainer of). My problem is that if it knocks to192.168.0.3
it tries to do this from192.168.0.2
and not from192.168.0.3
. Proxy is not an option unfortunately.192.168.0.2
and192.168.0.3
addresses configured? Also, please, can you tell us HOW you're going to connect to Postgresql: withpsql
? with a custom script? perl? python? PHP? other?192.168.0.3
. Clients connect only via192.168.0.3
.