The reason iodine works is not because any traffic to any IP on port 53 works, but because they allow traffic to a specific IP, and forward DNS queries.
Let's say the plane's DNS server is 192.168.1.53 and your DNS server is 1.1.1.53
You can't talk to 1.1.1.53 because that's blocked, so running wireguard on 1.1.1.53:53 doesn't help you. Instead, you run iodine there and configure "*.mydomain.com" to have 1.1.1.53 as its dns server.
Now, you can talk to 192.168.1.53 to make DNS queries, and then the dns server there, which isn't firewalled, will forward to 1.1.1.53:53, and proxy back the response.
Obviously, the plane's DNS server won't speak wireguard, nor forward wireguard for you.
That's the usecase for iodine, when you have access to some local DNS server which will forward requests for you, but you don't have access to the public internet, so you can access your own DNS server indirectly and thus do IP-over-DNS that way.
Let's say the plane's DNS server is 192.168.1.53 and your DNS server is 1.1.1.53
You can't talk to 1.1.1.53 because that's blocked, so running wireguard on 1.1.1.53:53 doesn't help you. Instead, you run iodine there and configure "*.mydomain.com" to have 1.1.1.53 as its dns server.
Now, you can talk to 192.168.1.53 to make DNS queries, and then the dns server there, which isn't firewalled, will forward to 1.1.1.53:53, and proxy back the response.
Obviously, the plane's DNS server won't speak wireguard, nor forward wireguard for you.
That's the usecase for iodine, when you have access to some local DNS server which will forward requests for you, but you don't have access to the public internet, so you can access your own DNS server indirectly and thus do IP-over-DNS that way.