为 Ubuntu 16.04 从源代码编译并安装 dante 服务器

为 Ubuntu 16.04 从源代码编译并安装 dante 服务器

Ubuntu 16.04 的 dante server 的 apt 存储库已过时(版本 1.1)。因此我需要从源代码编译该程序并安装它,因为我不想使用不受信任的 PPA。

通常当我从存储库安装时,apt install dante-server它就安装好了!如果你danted -v这样做,它会打印版本,你可以编辑你的 dante 配置文件/etc/danted.conf并重新启动danted服务并使用你的代理服务器!但是当我编译和安装该程序时,它仍然不能像我描述的那样使用。


以下是我目前所做的:

我从他们的网站下载了 dante-1.4.2.tar.gzhttps://www.inet.no/dante/download.html并做了:

./configure
make
make check
sudo make install

但当我尝试时,danted -v我发现它尚未安装(也检查了/usr/bin/usr/sbin/etc/init.d)。因此,从INSTALL下载的 tar.gz 文件中的 readme 文件中,我发现该程序安装在了中/usr/local

$ ls /usr/local/bin
socksify
$ ls /usr/local/sbin
sockd

但如您所见,它没有安装,只有 socksify 和 sockd 安装了。我相信 sockd 是 dante-server 的依赖项。

另外,我在 systemctl 中找不到名为 danted 的服务,我该如何安装该服务?

configure地位:

                 Configure status:

Client:            Enabled
Server:            Enabled
Preloading:        Enabled
Libwrap:           Disabled, tcpd.h missing
BSD Auth:          Disabled, usable bsd_auth.h not found
PAM:               Disabled, security/pam_appl.h missing
GSSAPI:            Not found/disabled
KRB5:              Not found/disabled
SASL:              Not found/disabled
UPNP:              Not found/disabled
Compatability:     issetugid setproctitle strlcpy strvis

                     Modules:

redirect:          Not found
bandwidth:         Not found
ldap:              Not found

答案1

看来二进制文件已正确安装 - 它名为sockd。这是此二进制文件的默认名称。您可以使用 重命名它mv /usr/local/sbin/sockd /usr/local/sbin/danted,您可以使用配置选项配置它以及默认配置文件,例如--with-sockd-conf=FILE它与 Ubuntu 中的 apache2 二进制文件相同。在 RHEL/Fedora 中,此二进制文件名为httpd

由于您已多次编辑您的问题,其中一些内容可能不再相关:

当你手动编译/安装时,二进制文件的默认安装位置是/usr/local/bin。使用 检查这是否在你的 PATH 变量中echo $PATH

libscompat/timer.h是一个 C 头文件。

/usr/local/man/man5/socks.conf不是一个配置文件,它是一个man页面。

阅读此文件的内容man /usr/local/man/man5/socks.conf,你就会知道要放什么/etc/socks.conf

通常情况下,您可以使用 来启用此功能systemctl enable dante.service,但您需要在中手动创建 systemd 服务文件/usr/lib/systemd/system/

以下是 20.04 版 danted.service 的一个示例:

[Unit]
Description=SOCKS (v4 and v5) proxy daemon (danted)
Documentation=man:danted(8) man:danted.conf(5)
After=network.target

[Service]
Type=simple
PIDFile=/run/danted.pid
ExecStart=/usr/sbin/danted
ExecStartPre=/bin/sh -c ' \
    uid=`sed -n -e "s/[[:space:]]//g" -e "s/#.*//" -e "/^user\\.privileged/{s/[^:]*://p;q;}" /etc/danted.conf`; \
    if [ -n "$uid" ]; then \
        touch /var/run/danted.pid; \
        chown $uid /var/run/danted.pid; \
    fi \
    '
PrivateTmp=yes
InaccessibleDirectories=/boot /home /media /mnt /opt /root
ReadOnlyDirectories=/bin /etc /lib -/lib64 /sbin /usr /var
DeviceAllow=/dev/null rw

[Install]
WantedBy=multi-user.target

答案2

当您从源/tarball 文件安装 dante 服务器时,它会安装二进制文件,如sockd。如果您愿意,/usr/bin可以将sockd二进制文件重命名为dante。如果这样做,您还需要更新服务文件中的名称。

您可以在 中配置 dante 服务器/etc/sockd.conf。示例配置如下。

internal: eth0 port = 3000
external: INSERT-YOUR-EXTERNAL-IP
socksmethod: none
logoutput: syslog stdout /var/log/sockd.log
client pass {
  from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
  clientmethod: none
  log: connect error
}
socks pass {
  from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
  clientmethod: none
  log: connect error
}

当您通过从源代码编译安装 dante 服务器时,不会创建 Sockd 服务,但您可以手动创建 sockd 服务。

sudo nano /etc/systemd/system/sockd.service

将以下内容复制到编辑器,保存并关闭。

[Unit]
Description=Sockd Service
[Service]
Type=normal
ExecStart=/usr/local/sbin/sockd
[Install]
WantedBy=multi-user.target

您将能够启动 sockd 服务并在启动时启用它。

sudo systemctl start sockd
sudo systemctl enable sockd

相关内容