go-proxyproto icon indicating copy to clipboard operation
go-proxyproto copied to clipboard

tls handshake error

Open baixiaoshi opened this issue 2 years ago • 0 comments

image

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 image

i think you wrap listener runing after the golang source code tls handshake

baixiaoshi avatar Jul 27 '22 02:07 baixiaoshi