mirror of https://github.com/fatedier/frp
feat: add support for setting custom udp listen port on the xtcp mode
parent
1e8db66743
commit
5b32150188
|
@ -64,7 +64,7 @@ func (pxy *XTCPProxy) InWorkConn(conn net.Conn, startWorkConnMsg *msg.StartWorkC
|
|||
}
|
||||
|
||||
xl.Tracef("nathole prepare start")
|
||||
prepareResult, err := nathole.Prepare([]string{pxy.clientCfg.NatHoleSTUNServer})
|
||||
prepareResult, err := nathole.Prepare([]string{pxy.clientCfg.NatHoleSTUNServer}, "")
|
||||
if err != nil {
|
||||
xl.Warnf("nathole prepare error: %v", err)
|
||||
return
|
||||
|
|
|
@ -275,7 +275,7 @@ func (sv *XTCPVisitor) makeNatHole() {
|
|||
}
|
||||
|
||||
xl.Tracef("nathole prepare start")
|
||||
prepareResult, err := nathole.Prepare([]string{sv.clientCfg.NatHoleSTUNServer})
|
||||
prepareResult, err := nathole.Prepare([]string{sv.clientCfg.NatHoleSTUNServer}, sv.cfg.UDPListen)
|
||||
if err != nil {
|
||||
xl.Warnf("nathole prepare error: %v", err)
|
||||
return
|
||||
|
|
|
@ -157,6 +157,11 @@ type XTCPVisitorConfig struct {
|
|||
MinRetryInterval int `json:"minRetryInterval,omitempty"`
|
||||
FallbackTo string `json:"fallbackTo,omitempty"`
|
||||
FallbackTimeoutMs int `json:"fallbackTimeoutMs,omitempty"`
|
||||
|
||||
// Specify the listen addr and port for the UDP NAT hole punching, the format is "addr:port" like "0.0.0.0:7000".
|
||||
// It is useful when your router's NAT hole punching doesn't work well, so you can explicitly config a UDP port
|
||||
// forwarding rule on the router to work around.
|
||||
UDPListen string `json:"udpListen,omitempty"`
|
||||
}
|
||||
|
||||
func (c *XTCPVisitorConfig) Complete(g *ClientCommonConfig) {
|
||||
|
|
|
@ -108,9 +108,9 @@ func PreCheck(
|
|||
}
|
||||
|
||||
// Prepare is used to do some preparation work before penetration.
|
||||
func Prepare(stunServers []string) (*PrepareResult, error) {
|
||||
func Prepare(stunServers []string, udpListen string) (*PrepareResult, error) {
|
||||
// discover for Nat type
|
||||
addrs, localAddr, err := Discover(stunServers, "")
|
||||
addrs, localAddr, err := Discover(stunServers, udpListen)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("discover error: %v", err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue