Cook the pasta in a large pot of salted boiling water according to package directions until al dente, then drain and set aside.
In the same pot, melt butter over medium heat. Once melted, whisk in the flour and cook for 2-3 minutes, stirring constantly, until the mixture is golden and smells nutty.
Gradually pour in the milk while whisking constantly to prevent lumps from forming. Continue whisking until the mixture is smooth.
Cook the sauce, stirring frequently, for 5-7 minutes until it thickens enough to coat the back of a spoon.
Remove the pot from heat and stir in salt, pepper, garlic powder, and mustard powder if using.
Add the shredded cheddar and mozzarella cheeses, stirring until completely melted and smooth.
Add the cooked pasta back to the pot and stir until every piece is coated with the cheese sauce. Serve immediately while hot and creamy.