Discar com um endereço / interface específico? Golang
Eu tenho duas interfaces de rede no meu computador (eth0 e eth1) e estou tentando discar uma conexão usando uma específica (eth1). Dada a afirmação de que Go é uma linguagem do sistema que eu assumi, mas é realmente possível com a biblioteca padrão atual?
Até agora eu tenho que pegar a interface pelo nomeInterfaceByName
(eth1
), então eu vou ao longo doAddrs
método e extraiu o primeiro endereço [0] que parece ser o endereço de origem da interface eth1 (por exemplo, xxx.xxx.xxx/24); o outro é o endereço ipv6.
Eu criei um novoDialer
E definirDialer.LocalAddr
com o endereço extraído. No entanto, recebo este erromismatched local address type
o que parece relacionado à função dialSingle dedial.go
Editar Algum código:
package main
import (
"net"
"log"
)
func main(){
ief, err := net.InterfaceByName("eth1")
if err !=nil{
log.Fatal(err)
}
addrs, err := ief.Addrs()
if err !=nil{
log.Fatal(err)
}
d := net.Dialer{LocalAddr: addrs[0]}
_, err = d.Dial("tcp", "google.com:80")
if err != nil {
log.Fatal(err)
}
}
Resultado:2014/12/10 17:11:48 dial tcp 216.58.208.32:80: mismatched local address type ip+net