почему если видит шлюз, то не видит узлы в этой сети...
Потому, что у вас "треугольный" роутинг. Туннель терминируется на VPN-сервере (192.168.231.42) и пакеты от VPN-клиентов с адресами источника 10.231.0.0/24 улетают в локальную сеть с его интерфейса eth0.
Но! Когда они попадают на локальный комп (192.168.231.250), тот не знает куда отвечать, т. к. в локальной сети никаких адресов 10.231.0.0/24 в его понимании нету. Поэтому он шлет ответ на свой default gateway (192.168.231.1).
Шлюз, в свою очередь, благодаря прописанному статическому маршруту, знает, что пакеты с адресами назначения 10.231.0.0/24 следует слать на 192.168.231.42.
Таким образом, все движется по треугольнику, в любой вершине которого правилами фаервола исходящие и ответные пакеты могут быть порезаны.
По идее на VPN-сервере вам надо всего лишь установить Network Address Translation: V в настройках OpenVPN и не морочиться с маршрутами и правилами.