If you want to reach, from the Lan B (192.168.0.0) the ‘real’ sever located in Lan A at 192.168.2.48, you should search for it at 172.20.0.48 ….Or , at least as per the rules are now written, the LanA should reach the Lan B, presenting itself as the network 172.20.0.0/24, while the Lan B, is for the Lan-A the 172.31.255.0/24 network ….
You can modify the prerouting/postrouting rules and the static routes if you want that the LanA ‘present’ itself as 172.31.255.0/24 to the Lan B, and the Lan B ‘present’ itself as 172.20.0.0/24 to the Lan A ……
But wouldn’t be simpler without any nat rule ?? Or you have the same networks on both ends ?