1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dante 1.4.3をUbuntu 20.04にインストールする

Posted at

目的

  • SOCKS5プロキシサーバをUbuntu 20.04上でIPv4/IPv6デュアルスタック構成で構築したい
  • 一般的なプロキシサーバとしての用途でなく、接続元の隠蔽としての利用をしたい

今回は、SOCKS5プロキシを実現するため、Danteを利用する。
Ubuntuで最も簡単にDanteをインストールするにはapt install dante-serverを実行すればよいが、aptで入るDanteのバージョンはV1.2と古い。
今回IPv6環境においてもSOCKS5プロキシを利用したいため、対応しているバージョンであるv1.4.3をビルドして導入する。

Danteビルド

公式ページを参照のこと。
下記、簡単な手順を記す。

  • apt install gcc makeで必要なパッケージを導入する。
  • 下記の通り、makeする。
# Download the source from inet.no
wget https://www.inet.no/dante/files/dante-1.4.3.tar.gz
# Extract tarball
tar xzvf dante-1.4.3.tar.gz
# Make
cd dante-1.4.3
./configure
make
make install
  • ビルドに成功すれば/usr/local/sbin/sockdができているので、sockd -vでバージョンを確認する。
  • apt経由だとファイル名がdantedなので、お好みでリネームする。本稿では以下dantedとリネームした前提で記載する。

Service設定

generated serviceを消す

私の環境では、/etc/init.d/dantedから自動的に生成されたsystemdサービス設定が存在したので、これを削除する。

rm /etc/init.d/dante
systemctl daemon-reload
systemctl list-unit-files --type=service | grep dante # サービスが消えたことを確認

サービス設定ファイル作成

サーバ起動時にIPアドレスがうまくバインドできず起動に失敗する事象が発生したので、暫定対応としてExecStartPresleep 10を入れている。

touch /etc/systemd/system/dante.service
vim /etc/systemd/system/dante.service
dante.service
[Unit]
Description=SOCKS (v4 and v5) proxy daemon (danted)
Documentation=man:danted(8) man:danted.conf(5)
After=network-online.target

[Service]
Type=simple
PIDFile=/run/danted.pid
ExecStart=/usr/local/sbin/danted -f /etc/danted.conf
ExecStartPre=/bin/sh -c ' \
    sleep 10; \
    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
DeviceAllow=/dev/null rw

[Install]
WantedBy=network-online.target

Dante設定ファイル

うろ覚えですが、make成功時に/etc/sockd.confで設定ファイルが生成されていたはず。今回danted.confとリネームして使用。
詳細な設定内容は公式サイトdanted.confのコメントを見るとすべてわかるはず。

以下に、簡単な設定内容を示す。パスワードは平文でやり取りされることに注意。

danted.conf
logoutput: /var/log/danted.log
internal: eth0 port=50001
external: eth0
socksmethod: username
clientmethod: none
user.privileged: root       # 認証にusernameを使う場合はrootが必要
user.unprivileged: nobody
#user.libwrap: nobody
client pass {
        from: 0/0 to: 0/0   # IPv4/IPv6すべてを通す時は0/0記法が可能
        clientmethod: none # match all idented users that also are in passwordfile
        socksmethod: username
}
socks block {
        from: 0/0 to: lo0
        log: connect error
}
socks pass {
        from: 0/0 to: 0/0
        command: bind connect udpassociate
        log: connect error
        socksmethod: username
        clientmethod: none
        protocol: tcp udp
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?