Are you trying to have the router itself use different IPs? The services that support that have an option for setting the source address.
Are you trying to have different clients use different IPs for NAT? Use an action of src-nat and specify the to-address rather than have an action of masquerade always pick (the same) IP automatically. The wiki manual on NAT has all the relevant details.
By default the router will use the preferred source for a subnet to send traffic out of from itself and a masquerade rule. This is often the first IP address that comes up when it is rebooted or the first IP address that you added to that interface. You can change it by disabling all IP addresses except for the one you want to have it use. I have a script that runs at startup and disables all IP addresses with a comment of “ISP NAT” and re-enables them a couple of seconds latter to get around this.
You can also change it by editing the relevent route (0.0.0.0/0 for instance) and explicitly setting the Pref. Source. This can also be set using a routing filter for dynamic routes. It is a good idea for the router to have a loopback, and use the loopback’s IP, for this sort of thing.
What I want to achieve is to set two web servers in lan, and assign each one with separate public IP using NAt on router. That works fine, but when bothe server try to establish connections to outside world, they use the same IP address.
Your explantions seem reasonable, I will try with that to-address trick in masquarade.
If you have static IPs, use action=src-nat and define the src-address in the NAT rule, instead of masquerade in that case. You can define what IP address the servers specifically use to make connections to the outside world that way.