A Russian missile attack killed 22 civilians and set a passenger train on fire in eastern Ukraine as the country marked its Independence Day under heavy shelling, officials in Kyiv said.

Ukrainian President Volodymyr Zelenskyy had warned of the risk of "repugnant Russian provocations" ahead of the 31st anniversary on Wednesday of Ukraine's independence from Moscow-dominated Soviet rule, and public celebrations were cancelled.

The holiday also coincided with six months since Russian forces invaded Ukraine, touching off Europe's most devastating conflict since World War II.