President Volodymyr Zelensky has visited military positions near the frontline town of Bakhmut in eastern Ukraine, the scene of the longest and bloodiest battle since Russia's invasion, he said.

"Donetsk region. The frontline positions of the Ukrainian military in the Bakhmut area," Mr Zelensky posted on social media.

"I am honored to be here today to award our heroes. To shake hands and thank them for protecting the sovereignty of our country."

Video released by Mr Zelensky's office showed the Ukrainian leader meeting servicemen in a warehouse and handing out awards.

Russian and Ukrainian forces have invested heavily in the battle for Bakhmut, even though analysts say the city carries little strategic value.

Mr Zelensky said Bakhmut is the scene of the longest and bloodiest battle since Russia's invasion

Kyiv says the battle for the industrial town, which had a pre-war population of around 80,000 people, is key to holding back Russian forces along the entire eastern front.

Yevgeny Prigozhin, the head of Russia's Wagner mercenary group, which claims to be spearheading Moscow's offensive for the town, said this week his forces control some 70% of Bakhmut.

Russian drone attack on school kills four in Kyiv

At least four people have been killed in a Russian drone strike that hit a school near Kyiv which Ukrainian President Volodymyr Zelensky said showed Moscow was not interested in peace.

The State Emergency Service said on the Telegram messaging app that two dormitories and an educational facility in Rzhyshchiv, 64km south of the capital, had been partially destroyed in the overnight attack.

An ambulance driver called to the scene was among those killed, the office of Ukraine's prosecutor general said.

The attack "partially destroyed" two floors of two student residences and a building that is used for studying, the same source said.

Regional police chief Andrii Nebytov said 20 people had been taken to hospital and several were still missing following a series of explosions after 3am local time that killed four people.

A large part of the top floor of a five-storey dormitory building had been knocked out by the attack. Workers in white helmets and reflective jackets clambered through the rubble of another badly damaged building.

"We see that the enemy has once again attacked civilian infrastructure (and) innocent people have died," Mr Nebytov wrote on Telegram, adding that one of the victims was an ambulance driver who had arrived to help.

State emergency officials said the search for survivors was continuing after attacks that the Ukrainian military said involved Iranian-made Shahed drones.

"Over 20 Iranian murderous drones, plus missiles, numerous shelling incidents, and that's just in one last night of Russian terror against Ukraine," Mr Zelensky wrote on Twitter.

"Every time someone tries to hear the word 'peace' in Moscow, another order is given there for such criminal strikes."

The Ukrainian military said it had shot down 16 of the 21 drones launched at Ukraine overnight from the north.

Russia, which invaded Ukraine 13 months ago, did not immediately comment on the latest attacks.

A fire affecting more than 300sq. metres of the school was extinguished shortly before 7am local time, according to the emergency services.

Russia regularly pounds Ukraine with missiles, artillery and drones, often causing power cuts that prevent people from warming their homes or getting drinking water.

Sevastopol suspends ferries after drone attack - Russian-backed governor

The Russian-backed administration in Sevastopol said that it had suspended ferry routes around the port city, shortly after the city's governor said a Ukrainian drone attack had been repelled by air defences.

Writing on Telegram, Sevastopol Governor Mikhail Razvozhaev said that three "objects" had been destroyed, and that there had been no casualties or damage to Russia's Black Sea Fleet, which is based in Sevastopol.

Reuters could not independently verify Razvozhaev's claims immediately.

Yesterday, an explosion in Dzhankoi, in the north of Crimea, was blamed on a Ukrainian drone strike by local officials.

Sevastopol, along with the rest of the Crimean peninsula, was annexed by Russia in 2014, but is internationally recognised as part of Ukraine.

There was no immediate reaction from Kyiv.