"A man wearing Afghan army uniform opened fire on French nationals killing four and injuring 16 others this morning in Tagab district of Kapisa province," a security official told AFP on condition of anonymity.
A spokesman for NATO forces said four NATO troops were killed and the shooter had been arrested, but did not give the nationality of the troops.
"Four International Security Assistance Force service members were killed today in eastern Afghanistan by a member of the Afghan National Army," the US-led force said in a statement.
French troops had surrounded their base in Kapisa and were not allowing any Afghan soldiers to approach, a security source told AFP.
There have been a number of incidents of Afghan soldiers turning their weapons on members of the 130,000-strong foreign force fighting an insurgency by hardline Taliban Islamists.
Last month, two soldiers with the French Foreign Legion serving in Afghanistan were shot dead by a man wearing an Afghan army uniform during a mission in Kapisa, site of the main French base in Afghanistan.
The Taliban claimed responsibility for that attack.
The latest deaths brought to 82 the number of French soldiers killed in Afghanistan since French forces deployed there at the end of 2001. Last year was been the bloodiest so far, with 26 killed.
France has about 3,600 soldiers serving in the country, mainly in the provinces of Kabul and Kapisa.