Preheat oven to 350 degrees F. Grease a 9x13-inch baking dish and set aside.
Cook the macaroni until al dente, about 6 minutes. Don’t overcook because the pasta will finish cooking in the oven. Drain and rinse the pasta with cold water. Drain well and set aside.
Meanwhile, in a large pot melt the butter over medium-low heat. Add the flour and quickly whisk. Cook for about 3 minutes, whisking frequently, or until smooth and slightly browned. Be careful not to burn the mixture. Add 1 cup of the milk and whisk until well combined and there are no lumps. Add the remaining milk and keep whisking until the mixtures starts to boil.
Add 3 cups cheddar cheese, all the Gruyere cheese, dry mustard, salt, and pepper and stir until cheese is melted and smooth.
Gently fold the cooked macaroni into the cheese mixture. Pour evenly into the prepared pan.
To make the topping, in a medium skillet, melt the butter over medium heat. Add the panko and crushed crackers and stir until the crumbs and crackers are coated in butter. Remove from heat and stir in the grated Parmesan cheese.
Sprinkle the remaining 1 cup cheddar cheese over the top of the macaroni and then add the panko cracker topping.
Bake for 30-35 minutes or until cheese is melted and bubbly and topping is golden brown. Let the mac and cheese rest for 5 minutes before serving.