Most likely your cities are NOT connected to BOTH the lines, even though they appear to be.
However, if your goal is to compute the distances between the cities, you do not need to make them part of the network dataset. You should make the network on just the rail line features. Then check the connectivity of the first or last lines (that is, places where you mention things do not appear to be).
Once you have made sure the connectivity is correct, then create a route analysis layer and load your city location pairs as Stops and solve. The city locations are snapped to the closest location on the network and distances are computed.
The only reason you want to bring points into a network are cases like providing extra information like costs or adding burn through connectivity when you have anyvertex connectivity.
Jay Sandhu