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