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.