Need more details. First what version of KiCad do you use and what system? Both of these can be answered by using the “Copy Version Info” button in the about window and pasting the results here. For example, this is my version information:
Version: (5.1.4)-1, release build
libcurl/7.61.1 OpenSSL/1.1.1 (WinSSL) zlib/1.2.11 brotli/1.0.6 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) nghttp2/1.34.0
Platform: Windows 8 (build 9200), 64-bit edition, 64 bit, Little endian, wxMSW
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8)
OpenCASCADE Community Edition: 6.9.1
Compiler: GCC 8.2.0 with C++ ABI 1013
(Note, there is a known Windows bug that doesn’t properly report the system info to applications which is why KiCad is reporting Win8 on my Win10 computer.)
Second, how are you placing vias? I ask because I just tried to duplicate your issue on my install and could not replicate your experience.
What I did was while routing a track I pressed the V key (with or without shift works for me) and as soon as I left-clicked to place the via my routing layer changed to the opposite side (2 layer board). I also used the “Place Through Via” contextual menu item with the same results.
press V and move the mouse. The interactive router continues to run -> this ensures that the via can be placed without DRC violation and you still have control over its placement.
If V would immediately place the via then the via might be placed where you did not expect it to be placed if the current position is blocked by some other feature.
Remember the interactive router is not meant to be used like the old segment by segment (highlight collision) router. It is a semi automatic router. This requires some workflows to change.
Are you sure it is right click? by default it is the left mouse button that places vias. Have you possibly setup your system for a left handed mouse?