Two issues I see with this solution.
1. (R4) We need to setnext-hop-self to neighbor R3.
Reason: R3 sees the correct route (through R4/R6) using 142.1.46.6 -- however, R6 has the better route (directly connected) to this IP address. In order to force the route through R4, we need to set next-hop-self to neighbor R3 (from R4).
2. (R6) Solution uses set next hop peer-address from R6 to R3.
This command has no value, as our problem is actually getting R3 to use R4. The next-hop-self (#1) fixes the problem.
Feel free to test this, and let me know if I am correct or not.
BTW, I used MED (metric) for my manipulation of the routes.
EDIT: Here is another thread discussing this same task/issue. Task 2.8 Use of peer-address