Возможно ли получить адрес последнего перехода неудачного tcp net.Dial?

#go #tcp

#Вперед #tcp

Вопрос:

Моей целью было бы решить, было ли выполнено неудачное TCP-соединение с net.Сбой набора (это не обязательно должен быть net.Dial) произошел из-за проблемы с брандмауэром / подключением или просто сбоя в прослушивателе.

Итак, по сути, я хотел бы видеть что-то подобное тому, что я сделал бы с tcptraceroute.

  1. тайм-аут (какой был последний ip)
  2. открытый / закрытый порт в dst

Также было бы неплохо выяснить, какой сетевой интерфейс (локальный адрес) использовался для неудачного соединения

 conn, err := net.Dial("tcp", hostName   ":"   portNum)

if err != nil {
// is it possible to have socket values here
// maybe the last succesful hop before the connection failed?
}

// on succesfull conn it is straightforward
conn.LocalAddr()
conn.RemoteAddr()

  

Комментарии:

1. В случае возникновения ошибки вы можете вызвать утилиту traceroute для получения информации о переходах (например, этот github.com/aeden/tracerout )