ライブラリなしで簡単なtracerouteを作りたいです。
Wireshark で着信応答が表示されますが、メッセージを受信できません。のポートは のポートreceive_socket
と同じsend_socket
であり、指定されたプロトコルは正しい必要があります。
def traceroute
local_host = '0.0.0.0'
remote_host = '8.8.8.8'
traceroute_port = 33434
random_port = rand(10000..20000)
# Create UDP-Socket
udp_socket = UDPSocket::new
udp_socket.bind(local_host, random_port)
udp_socket.setsockopt( 0, Socket::IP_TTL, 3)
# Send Data
udp_socket.connect(remote_host, traceroute_port)
udp_socket.send('Traceroute', 0)
# Create Receive-Socket
receive_socket = Socket.open(Socket::PF_INET, Socket::SOCK_RAW, Socket::IPPROTO_ICMP)
receive_socket.bind(Socket.pack_sockaddr_in(random_port, local_host))
# Receive Data
begin
p receive_socket.recvfrom(1024)
rescue SocketError => exception
puts exception.message
end
end
誰かが私を助けることができれば、それは素晴らしいことです.