In[3]:= mat = {{3, 4, 18, 24}, {27, 16, 28, 24}}; r = {30,
30}; vars = {a, b, c, d};
In[4]:= Reduce[Thread[mat.vars == r], vars, Integers]
Out[4]= (C[1] | C[2]) \[Element] Integers && a == 2 + 8 C[1] &&
b == 6 + 9 C[1] + 15 C[2] && c == -12 - 30 C[1] - 18 C[2] &&
d == 9 + 20 C[1] + 11 C[2]