如何将 gpsd 绑定到某个特定的网络接口?

How to bind gpsd to some specific network interface?

在我的电脑中,目前存在 3 个不同的网络接口(接口 1、接口 2、接口 3)。我想以这种方式启动 gpsd 守护程序,它应该绑定到我想要的某个特定接口。

目前 运行 宁 gpsd 如下

gpsd -b -n   #Here gpsd binds to localhost.

我的目标是运行 gpsd

gpsd -b -n interface1_ip   #here gpsd should bind to only interface1. 

我该怎么做?

一种快速而肮脏的方法是使用 -G 选项启动 gpsd,以启用监控 所有 接口(默认情况下,gpsd 将仅监听本地主机以确保安全和隐私) 然后通过适当的防火墙规则禁用对不需要的接口的访问(禁用对两个不需要的接口的访问)。 Gpsd 将监听端口 2947,您可以使用 -S 选项更改它以满足您的需要。

Systemd 接管(再次)!套接字在 systemd 中配置如下:

在用户创建的(最有可能的)文件中: /etc/systemd/system/gpsd.socket.d/socket.conf

[Unit]
Description=GPS (Global Positioning System) Daemon Sockets

[Socket]
# First blank ListenStream clears the system defaults
ListenStream=
ListenStream=/var/run/gpsd.sock
#ListenStream=2947
ListenStream=0.0.0.0:2947
SocketMode=0600

[Install]
WantedBy=sockets.target