I am still persistent on the fact that NAT should work with this sense.
I just enable NAT with the following command
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.1.5
This IP 192.168.1.5 is our patched linux server which is allowed to acccess
192.168.1.77
Now all protocols in the linux system is working fine as ever, and even ping
sent to 192.168.77.1 returns from 192.168.77.1 that is visible in the
presumably lowest layer of network stack (as tcpdump also sees it that way).
However; the client on the interface eth0 which has the IP address of
192.168.0.30 gets its IP address translated to 192.168.1.5, the ping is sent
and a response is received (tcpdump shows it)