Default local listeners to 127.0.0.1
CI / check-and-test (pull_request) Successful in 11s

Client TCP/UDP and the built-in DNS server bind loopback unless bind_address or a per-rule host (tcp://22:0.0.0.0:2222) is set. README and generated server examples no longer document :9000/:8080 as if they were localhost-only.

Closes #3
This commit is contained in:
s1d3sw1ped_bot
2026-09-01 04:10:14 +00:00
parent 283781fd47
commit c20398642d
5 changed files with 393 additions and 45 deletions
+15 -3
View File
@@ -93,9 +93,11 @@ func (tc *TeleportClient) startPortForwarding(rule config.PortRule) {
// startTCPForwarding starts TCP port forwarding
func (tc *TeleportClient) startTCPForwarding(rule config.PortRule) {
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", rule.LocalPort))
listenAddr := tc.config.ClientListenAddr(rule)
listener, err := net.Listen("tcp", listenAddr)
if err != nil {
logger.WithFields(map[string]interface{}{
"addr": listenAddr,
"port": rule.LocalPort,
"error": err,
}).Error("Failed to start TCP listener")
@@ -104,6 +106,7 @@ func (tc *TeleportClient) startTCPForwarding(rule config.PortRule) {
defer listener.Close()
logger.WithFields(map[string]interface{}{
"listen_addr": listenAddr,
"local_port": rule.LocalPort,
"remote_addr": tc.config.RemoteAddress,
"remote_port": rule.RemotePort,
@@ -254,9 +257,11 @@ func (tc *TeleportClient) returnConnection(conn net.Conn) {
// startUDPForwarding starts UDP port forwarding
func (tc *TeleportClient) startUDPForwarding(rule config.PortRule) {
addr, err := net.ResolveUDPAddr("udp", fmt.Sprintf(":%d", rule.LocalPort))
listenAddr := tc.config.ClientListenAddr(rule)
addr, err := net.ResolveUDPAddr("udp", listenAddr)
if err != nil {
logger.WithFields(map[string]interface{}{
"addr": listenAddr,
"port": rule.LocalPort,
"error": err,
}).Error("Failed to resolve UDP address")
@@ -266,6 +271,7 @@ func (tc *TeleportClient) startUDPForwarding(rule config.PortRule) {
conn, err := net.ListenUDP("udp", addr)
if err != nil {
logger.WithFields(map[string]interface{}{
"addr": listenAddr,
"port": rule.LocalPort,
"error": err,
}).Error("Failed to start UDP listener")
@@ -277,6 +283,7 @@ func (tc *TeleportClient) startUDPForwarding(rule config.PortRule) {
tc.udpMutex.Unlock()
logger.WithFields(map[string]interface{}{
"listen_addr": listenAddr,
"local_port": rule.LocalPort,
"remote_addr": tc.config.RemoteAddress,
"remote_port": rule.RemotePort,
@@ -641,7 +648,12 @@ func (tc *TeleportClient) handleTCPConnection(clientConn net.Conn, rule config.P
defer tc.returnConnection(serverConn)
// Send port forward request to server
request := types.PortForwardRequest(rule)
request := types.PortForwardRequest{
LocalPort: rule.LocalPort,
RemotePort: rule.RemotePort,
Protocol: rule.Protocol,
TargetHost: rule.TargetHost,
}
if err := tc.sendRequestToConnection(serverConn, request); err != nil {
logger.WithField("error", err).Error("Failed to send port forward request")