Dinan is in Brittany's Côtes-d'Armor department, about 50 km west of Saint-Malo and 90 km north of Rennes.
By train, Dinan station has TER Bretagne services to Saint-Brieuc and Dol-de-Bretagne, from where connections run to Rennes, Paris, and the main Breton cities. The station is about 15 minutes' walk from the old town. Note that service is limited — there is only one through-train per day on most routes, so check schedules carefully.
By car, Dinan is straightforward to reach on the N176 from Saint-Malo or the D766 from Rennes via Lamballe. Parking is available on the edge of the old town; the streets inside are too narrow for easy driving.
In summer, boat services run from Saint-Malo down the Rance estuary to the port below the town — a scenic approach.