go-proxyproto
go-proxyproto copied to clipboard
tls handshake error
server code
func main() {
cert, err := tls.LoadX509KeyPair("cert/xxxx.crt", "cert/xxx.key")
if err != nil {
log.Println(err)
return
}
config := &tls.Config{
Certificates: []tls.Certificate{cert}}
ln, err := tls.Listen("tcp", ":9090", config)
proxyListener := &proxyproto.Listener{
Listener: ln,
}
conn, err := proxyListener.Accept()
if err != nil {
log.Fatalf("err: %v", err)
}
defer conn.Close()
addr := conn.RemoteAddr().(*net.TCPAddr)
fmt.Println("ip====", addr.IP.String())
if addr.IP.String() != "10.1.1.1" {
log.Fatalf("bad: %v", addr)
}
if addr.Port != 1000 {
log.Fatalf("bad: %v", addr)
}
}
client code
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:9090")
if err != nil {
log.Fatalf("err: %v", err)
}
defer conn.Close()
// Write out the header!
header := "PROXY TCP4 10.1.1.1 20.2.2.2 1000 2000\r\n"
conn.Write([]byte(header))
}
trigger error
[ERR] Failed to read proxy prefix: tls: first record does not look like a TLS handshake
on golang source code
i think you wrap listener runing after the golang source code tls handshake