lua, 102 bytes
function r(n,t) for d=1,n do t=t+math.random(1,6)end return t==n*3.5 or print(n)or r(n+2,0)end r(2,0)
Or the more readable version
function r(n,t) --recursive function does its magic, t is given to safe usage bytes(no local)
for d=1,n do --roll n dice and count them up to the total (t)
t =t+math.random(1,6)
end
return t==n*3.5 or --check if t==n*3.5. If it is then it ends
print(n) or --t != n*3.5 thus print n. print returns nil
r(n+2,0) --both the check and the return value from print are false thus r gets executed.
end
r(2,0) --start the process
A more cheaty version for 96 bytes
function r(n,t,m)t=t+m(1,6)+m(1,6)return t==n*3.5 or print(n)or r(n+2,t,m)end r(2,0,math.random)
This pretty much works the same as the first but reuses the rolls from earlier calls. Because of this I can remove the for loop.
Both are tested in lua 5.2