web.address issue on Windows Server 2022 with Multiple IPs

bbollarda year ago

I am experimenting with the web.address feature as a means of isolating traffic on a multi-use server and have configured it to use a 2nd IP address assigned to the same NIC as the primary IP address as so:

<entry key='web.address'>172.16.0.10</entry>
<entry key='web.port'>8080</entry>
PS C:\Program Files\Traccar\conf> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : redacted
   Primary Dns Suffix  . . . . . . . : redacted.org
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : redacted.org
                                       local

Ethernet adapter NIC2:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet
   Physical Address. . . . . . . . . : 20-47-47-7A-41-7A
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Ethernet adapter NIC1:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet #2
   Physical Address. . . . . . . . . : 20-47-47-7A-41-78
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::9b2b:3711:352f:beb%9(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.16.0.5(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   IPv4 Address. . . . . . . . . . . : 172.16.0.10(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   Default Gateway . . . . . . . . . : 172.16.0.1
   DNS Servers . . . . . . . . . . . : 172.16.0.5
                                       8.8.8.8
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Ethernet 2:

   Connection-specific DNS Suffix  . : local
   Description . . . . . . . . . . . : Remote NDIS Compatible Device
   Physical Address. . . . . . . . . : 20-47-47-7A-41-7D
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::641e:eea8:b18d:d725%8(Preferred)
   IPv4 Address. . . . . . . . . . . : 169.254.0.2(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Wednesday, February 14, 2024 1:10:43 AM
   Lease Expires . . . . . . . . . . : Saturday, February 24, 2024 1:10:45 AM
   Default Gateway . . . . . . . . . :
   DHCP Server . . . . . . . . . . . : 169.254.0.1
   DHCPv6 IAID . . . . . . . . . . . : 253773639
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1D-17-5F-F5-20-47-47-7A-41-7A
   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over Tcpip. . . . . . . . : Enabled

However, when the traccar service is restarted, the UI is listening on some other IP in the Automatic Private IP Addressing range which coincidentally corresponds to the Remote NDIS Compatible Device psuedo NIC (I think the server's OOB management card):

PS C:\Program Files\Traccar\conf> netstat -ano | select-string ':8080'

  TCP    169.254.41.152:8080    0.0.0.0:0              LISTENING       824

Logs indicate no issues:

2024-02-17 14:49:02  INFO: Operating system name: Windows Server 2022 version: 10.0 architecture: amd64
2024-02-17 14:49:02  INFO: Java runtime name: OpenJDK 64-Bit Server VM vendor: Eclipse Adoptium version: 17.0.6+10
2024-02-17 14:49:02  INFO: Memory limit heap: 2034mb non-heap: 0mb
2024-02-17 14:49:02  INFO: Character encoding: windows-1252
2024-02-17 14:49:02  INFO: Version: 5.12
2024-02-17 14:49:02  INFO: Starting server...
2024-02-17 14:49:03  INFO: HikariPool-1 - Starting...
2024-02-17 14:49:03  INFO: HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@31708ce4
2024-02-17 14:49:03  INFO: HikariPool-1 - Start completed.
2024-02-17 14:49:04  INFO: Clearing database change log checksums
2024-02-17 14:49:04  INFO: Successfully acquired change log lock
2024-02-17 14:49:04  INFO: Successfully released change log lock
2024-02-17 14:49:09  INFO: Reading from traccar.DATABASECHANGELOG
2024-02-17 14:49:10  INFO: Reading from traccar.DATABASECHANGELOG
2024-02-17 14:49:10  INFO: Reading from traccar.DATABASECHANGELOG
2024-02-17 14:49:10  INFO: UPDATE SUMMARY
2024-02-17 14:49:10  INFO: Run:                          0
2024-02-17 14:49:10  INFO: Previously run:              46
2024-02-17 14:49:10  INFO: Filtered out:                 0
2024-02-17 14:49:10  INFO: -------------------------------
2024-02-17 14:49:10  INFO: Total change sets:           46

2024-02-17 14:49:10  INFO: Update summary generated
2024-02-17 14:49:10  INFO: Successfully released change log lock
2024-02-17 14:49:10  INFO: Command execution complete
2024-02-17 14:49:13  INFO: jetty-11.0.19; built: 2023-12-15T20:54:39.802Z; git: f781e475c8fa9e9c8ce18b1eaa03110d510f905f; jvm 17.0.6+10
2024-02-17 14:49:13  INFO: Started o.t.w.@7f38ded0{/,null,AVAILABLE}
2024-02-17 14:49:13  INFO: Session workerName=node0
2024-02-17 14:49:14  WARN: JAXBContext implementation could not be found. WADL feature is disabled.
2024-02-17 14:49:14  INFO: [Te26fd041] connected
2024-02-17 14:49:15  INFO: Started o.e.j.s.ServletContextHandler@74854fb9{/,null,AVAILABLE}
2024-02-17 14:49:15  INFO: Started ServerConnector@5cc94d99{HTTP/1.1, (http/1.1)}{<redacted>:8080}
2024-02-17 14:49:15  INFO: Started Server@70cdf268{STARTING}[11.0.19,sto=0] @16266ms

Debug log references the odd IP:

024-02-17 15:04:35 DEBUG: QueuedThreadPool[qtp1742743239]@67e026c7{STOPPED,8<=0<=200,i=0,r=-1,t=-309261056ms,q=0}[NO_TRY] added {org.eclipse.jetty.util.thread.ThreadPoolBudget@34545910,POJO}
2024-02-17 15:04:35 DEBUG: Server@e669a86{STOPPED}[11.0.19,sto=0] added {QueuedThreadPool[qtp1742743239]@67e026c7{STOPPED,8<=0<=200,i=0,r=-1,t=-309261065ms,q=0}[NO_TRY],AUTO}
2024-02-17 15:04:35 DEBUG: Server@e669a86{STOPPED}[11.0.19,sto=0] added {AttributeContainerMap@7b5ddd2e{size=0},AUTO}
2024-02-17 15:04:35 DEBUG: HttpConnectionFactory@18253c1c[HTTP/1.1] added {HttpConfiguration@45b58138{32768/8192,8192/8192,https://:0,[]},POJO}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{null, ()}{0.0.0.0:0} added {QueuedThreadPool[qtp1742743239]@67e026c7{STOPPED,8<=0<=200,i=0,r=-1,t=-309261102ms,q=0}[NO_TRY],AUTO}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{null, ()}{0.0.0.0:0} added {ScheduledExecutorScheduler@2b351fec{STOPPED},AUTO}
2024-02-17 15:04:35 DEBUG: Server@e669a86{STOPPED}[11.0.19,sto=0] added {LogarithmicArrayByteBufferPool@730c9026{minBufferCapacity=0, maxBufferCapacity=65536, maxQueueLength=-1, factor=4096},POJO}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{null, ()}{0.0.0.0:0} added {LogarithmicArrayByteBufferPool@730c9026{minBufferCapacity=0, maxBufferCapacity=65536, maxQueueLength=-1, factor=4096},UNMANAGED}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{null, ()}{0.0.0.0:0} added {org.eclipse.jetty.io.LogarithmicArrayByteBufferPool$LogarithmicRetainablePool@18115131{min=0,max=65536,buckets=17,heap=0/-1,direct=0/-1},POJO}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{null, ()}{0.0.0.0:0} added {org.eclipse.jetty.server.AbstractConnector$1@40823413,POJO}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{null, (http/1.1)}{0.0.0.0:0} added {HttpConnectionFactory@18253c1c[HTTP/1.1],AUTO}
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{HTTP/1.1, (http/1.1)}{0.0.0.0:0} added HttpConnectionFactory@18253c1c[HTTP/1.1]
2024-02-17 15:04:35 DEBUG: ServerConnector@3b45242b{HTTP/1.1, (http/1.1)}{0.0.0.0:0} added {SelectorManager@ServerConnector@3b45242b{HTTP/1.1, (http/1.1)}{0.0.0.0:0},MANAGED}
2024-02-17 15:04:35 DEBUG: Server@e669a86{STOPPED}[11.0.19,sto=0] added {ServerConnector@3b45242b{HTTP/1.1, (http/1.1)}{<redacted>:8080},AUTO}
2024-02-17 15:04:35 DEBUG: o.e.j.s.ServletContextHandler@2f767160{/,null,STOPPED} added {org.eclipse.jetty.server.session.SessionHandler200146501==dftMaxIdleSec=-1,MANAGED}
2024-02-17 15:04:35 DEBUG: org.eclipse.jetty.server.session.SessionHandler200146501==dftMaxIdleSec=-1 added {ServletHandler@1b5141d{STOPPED},MANAGED}
2024-02-17 15:04:35 DEBUG: o.e.j.s.ServletContextHandler@2f767160{/,null,STOPPED} added {ServletContainerInitializerStarter@65290c2c{STOPPED},MANAGED}
2024-02-17 15:04:35 DEBUG: ServletContainerInitializerStarter@65290c2c{STOPPED} added {ContainerInitializer{org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer,interested=[],applicable=[],annotated=[]},MANAGED}
2024-02-17 15:04:35 DEBUG: ServletHandler@1b5141d{STOPPED} added {com.google.inject.servlet.GuiceFilter-74f0d2f7==com.google.inject.servlet.GuiceFilter@74f0d2f7{inst=false,async=true,src=EMBEDDED:null},AUTO}
2024-02-17 15:04:35 DEBUG: ServletHandler@1b5141d{STOPPED} added {[/*]/[]/[]=>com.google.inject.servlet.GuiceFilter-74f0d2f7,POJO}
2024-02-17 15:04:35 DEBUG: ServletHandler@1b5141d{STOPPED} added {org.eclipse.jetty.servlet.DefaultServlet-2fb323fd==org.eclipse.jetty.servlet.DefaultServlet@892d0e3{jsp=null,order=-1,inst=false,async=true,src=EMBEDDED:null,STOPPED},AUTO}
2024-02-17 15:04:35 DEBUG: ServletHandler@1b5141d{STOPPED} added {[/api/media/*]=>org.eclipse.jetty.servlet.DefaultServlet-2fb323fd,POJO}
2024-02-17 15:04:36 DEBUG: ServletHandler@1b5141d{STOPPED} added {org.glassfish.jersey.servlet.ServletContainer-341a2625==org.glassfish.jersey.servlet.ServletContainer@a2a67006{jsp=null,order=-1,inst=false,async=true,src=EMBEDDED:null,STOPPED},AUTO}
2024-02-17 15:04:36 DEBUG: ServletHandler@1b5141d{STOPPED} added {[/api/*]=>org.glassfish.jersey.servlet.ServletContainer-341a2625,POJO}
2024-02-17 15:04:36 DEBUG: HttpField encoders loaded: [org.eclipse.jetty.http.Http1FieldPreEncoder@32100dc]
2024-02-17 15:04:36 DEBUG: ServletHandler@1b5141d{STOPPED} added {org.traccar.web.ModernDefaultServlet-5580c265==org.traccar.web.ModernDefaultServlet@5b420b12{jsp=null,order=-1,inst=false,async=true,src=EMBEDDED:null,STOPPED},AUTO}
2024-02-17 15:04:36 DEBUG: ServletHandler@1b5141d{STOPPED} added {[/*]=>org.traccar.web.ModernDefaultServlet-5580c265,POJO}
2024-02-17 15:04:36 DEBUG: o.e.j.s.ServletContextHandler@2f767160{/,null,STOPPED} added {ErrorHandler@825c28f{STOPPED},MANAGED}
2024-02-17 15:04:36 DEBUG: o.t.w.@7d17c61f{/,null,STOPPED} added {ServletHandler@600c343f{STOPPED},MANAGED}
2024-02-17 15:04:36 DEBUG: ServletHandler@600c343f{STOPPED} added {org.eclipse.jetty.proxy.AsyncProxyServlet$Transparent-65131018==org.eclipse.jetty.proxy.AsyncProxyServlet$Transparent@b8df7d4{jsp=null,order=-1,inst=false,async=true,src=EMBEDDED:null,STOPPED},AUTO}
2024-02-17 15:04:36 DEBUG: ServletHandler@600c343f{STOPPED} added {[/]=>org.eclipse.jetty.proxy.AsyncProxyServlet$Transparent-65131018,POJO}
2024-02-17 15:04:36 DEBUG: HandlerList@377ab1c{STOPPED} added {o.t.w.@7d17c61f{/,null,STOPPED},AUTO}
2024-02-17 15:04:36 DEBUG: HandlerList@377ab1c{STOPPED} added {o.e.j.s.ServletContextHandler@2f767160{/,null,STOPPED},AUTO}
2024-02-17 15:04:36 DEBUG: Creating ServletPathSpec[*.svgz] (group: SUFFIX_GLOB, prefix: "null", suffix: "svgz")
2024-02-17 15:04:36 DEBUG: Added MappedResource[pathSpec=ServletPathSpec@9727ded2{*.svgz},resource=true] to PathMappings[size=1]
2024-02-17 15:04:36 DEBUG: GzipHandler@28f13304{STOPPED,min=32,inflate=-1} mime types IncludeExclude@3787c0cf{i=[],ip=CONTAINS,e=[image/ief, image/vnd.wap.wbmp, image/jpeg, application/bzip2, image/x-portable-graymap, application/brotli, image/bmp, image/gif, image/x-icon, image/apng, audio/midi, image/webp, video/x-msvideo, image/x-xbitmap, application/x-rar-compressed, text/event-stream, image/avif, image/x-portable-bitmap, image/x-rgb, image/x-cmu-raster, application/gzip, audio/x-wav, audio/x-pn-realaudio, audio/basic, application/compress, audio/x-aiff, video/x.ms.asx, video/x.ms.asf, image/png, video/vnd.rn-realvideo, image/x-xwindowdump, image/jpeg2000, video/x-sgi-movie, audio/mpeg, image/xcf, video/mpeg, image/x-portable-pixmap, image/tiff, image/x-portable-anymap, image/x-xpixmap, application/zip, video/quicktime, application/x-xz, video/mp4],ep=CONTAINS}
2024-02-17 15:04:36 DEBUG: HandlerList@377ab1c{STOPPED} added {GzipHandler@28f13304{STOPPED,min=32,inflate=-1},AUTO}
2024-02-17 15:04:36 DEBUG: Server@e669a86{STOPPED}[11.0.19,sto=0] added {HandlerList@377ab1c{STOPPED},MANAGED}
2024-02-17 15:04:36 DEBUG: STARTING Server@e669a86{STOPPED}[11.0.19,sto=0]
2024-02-17 15:04:36 DEBUG: Server@e669a86{STARTING}[11.0.19,sto=0] added {ErrorHandler@15d92674{STOPPED},AUTO}
2024-02-17 15:04:36  INFO: jetty-11.0.19; built: 2023-12-15T20:54:39.802Z; git: f781e475c8fa9e9c8ce18b1eaa03110d510f905f; jvm 17.0.6+10
2024-02-17 15:04:36 DEBUG: Could not configure SO_REUSEPORT to false on sun.nio.ch.ServerSocketChannelImpl[unbound] - 'SO_REUSEPORT' not supported - UnsupportedOperationException (... < WebServer:223 < Main:126 < *:94 < WindowsService:184 < ...)
2024-02-17 15:04:36 DEBUG: ServerConnector@3b45242b{HTTP/1.1, (http/1.1)}{<redacted>:8080} added {sun.nio.ch.ServerSocketChannelImpl[/169.254.41.152:8080],POJO}
2024-02-17 15:04:36 DEBUG: starting Server@e669a86{STARTING}[11.0.19,sto=0]

2024-02-17 15:04:36 DEBUG: ServerConnector@3b45242b{HTTP/1.1, (http/1.1)}{:8080} added {sun.nio.ch.ServerSocketChannelImpl[/169.254.41.152:8080],POJO}

And I confirmed the UI is listening on 169.254.41.152:8080. I don't see any other web.* settings that may come into play here.

Not a showstopper for me but if there's a way around it, I would appreciate it. Thanks for a great product.