I thought I'd do this using a mapping tool. So the map and list of locations for Guan Yu's journey (at least before he diverted for Runan) is:

- Xuchang
- Dongling Pass (south of modern day Dengfeng)
- Luoyang
- Sishui Pass (actually Hulao Pass in real life)
- Xingyang
The last location is by the bank of the Yellow River, but it isn't specified where. Also for reference, Guandu is the unnumbered pin.
So the path taken is not a straight one but a great big left hook. This raises some questions:
- The hook extends to the west at Luoyang. Was there some compelling reason to go there?
- Or was it somehow impossible to go directly north from Xuchang - perhaps to avoid the bulk of Cao Cao's forces still engaging Yuan Shao in the area?
- Sishui/Hulao Pass is quite close to the river already. Why not cross near here?
The Yellow River is notorious for changing course but these usually occur just downstream from Zhengzhou, so the path described in the novel shouldn't be affected. It's possible that there were limited locations for ferries, and Guan Yu may have traced the coastline looking for them, but that's my pure speculation.
The Three Kingdoms Podcast talks more about this; apparently the journey's locations changed throughout retellings over the centuries prior to the novel, and perhaps the original starting point was Chang'an (in the far west), which explains the odd diversion into Luoyang. But given that all this is fictional, there's probably not much sense in worrying about the journey.