Try covering it with white undercoat,I have used this to cover a ceiling that was stained from smoking,easier than cleaning if it has a rough surface like most modern ceilings now.The stain won't come through if is not a water based paint.
Had this problemon the mother in-laws ceiling. I used a proprietary sealer especially designed for sealing stains.
Just roller it on and leave to dry and then re-coat with whatever you want.
Have been told a coat of gloss paint over it first would do the same thing.
I used the spray, it was Thompson's Damp Seal. I found that the spray was much cheaper if you just have a small amount to cover. The paint on version was very expensive. I got it from B&Q on the damp proofing type section. It worked a treat for me, good luck.