First of all, you have to define ns1.railnet.ir.
in your zone. Add a line
ns1 IN A 87.236.210.159
Second, your DNS server does not reply. dig railnet.ir @87.236.210.159
does not return any answers. To figure out why, have a look at the logs provided by bind. Likely it can't open the zone file for some reason, or finds it invalid.
Third, your also-notify
and allow-transfer
points back to yourself based on what you write. Commonly these should point at your secondary DNS servers for that domain.
Start by making bind reply authoratively for all valid names, e.g.
dig railnet.ir SOA @87.236.210.159
should return ns1.railnet.ir
dig ns1.railnet.ir A @87.236.210.159
should return 87.236.210.159
When that's done, update whois, and hopefully glue records will be configured correctly.
In addition, you probably want to define some ACL's. As it is now, bind answers everything anyone bothers to ask. You probably want it to answer to zones it controls, and deny other queries.
In addition, DNS is one of those things that's a bit finicky to host yourself. Not impossible, but with only one domain you have to rely on glue records. Together with caching, this can lead to short downtime being cached. It's often a better approach to host DNS externally, with e.g. Cloudflare.