Which of these is the right way to let people reorder columns in a table

I have a data table where I present live sensor data for comparison.

  1. There are atleast 10 columns on the screen at all times and the user can add upto 100 columns by toggling them
  2. Some columns are fixed and cannot be reordered while others take part in reordering

enter image description here

My current approach

  1. I am opening a modal inside which each visible column has a number assigned to it
  2. Editing the numbers would change the column order
  3. Fixed header numbers cannot be changed

enter image description here

What is the right way to do this?

  1. Drag and drop columns in the table itself? How does that work with horizontally scrolling long tables
  2. Open a modal and show all columns in a list format and let people drag and drop items in that list. The list will grow vertically and the modal will need a scroll bar beyond say 20 columns
  3. Show numbers like my current approach? Are there better approaches I havent considered yet

Some direction will be super appreciated