I have a basic ruby program, that listens on a port (53), receives the data and then sends to another location (Google DNS server – 8.8.8.8). The responses are not going back to their original destination, or I’m not forwarding them correctly.
Here is the code. NB I’m using EventMachine
require 'rubygems'
require 'eventmachine'
module DNSServer
def post_init
puts 'connected'
end
def receive_data(data)
# Forward all data
conn = UDPSocket.new
conn.connect '8.8.8.8', 53
conn.send data, 0
conn.close
p data.unpack("H*")
end
def unbind
puts 'disconnected'
end
end
EM.run do
EM.open_datagram_socket '0.0.0.0', 53, DNSServer
end
Any thoughts as to why or tips to debug, would be most appreciated.
The obvious problems are:
sendinstead ofconnect#send_data) to the original clientThis seems to work: