2025年6月22日 星期日

在 Ubuntu 用 dante 架設 sock5 代理 讓瀏覽器在特定網址跳轉IP

在 Ubuntu 用 dante 架設 sock5 代理 讓瀏覽器在特定網址跳轉IP

第二篇是代理伺服器,代理再搭配 Chrome 的插件 SwitchyOmega 就可以完成組合技,只在特定網只才跳轉IP



安裝

更新並安裝

sudo apt-get update && sudo apt install dante-server -y

然後我們先備份一下最初的原始設定範例

sudo cp -p /etc/danted.conf /etc/danted.orig.conf



更改設定

再來我們修改設定值

sudo nano /etc/danted.conf

輸入下面的基本範例

logoutput: /var/log/danted.log
internal: 0.0.0.0 port = 1080
external: wg1

method: none
user.notprivileged: nobody

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect disconnect error
}

pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    protocol: tcp udp
    log: connect disconnect error
}

輸入完畢按下 CTRL+S 存檔 CTRL+X 離開



啟動服務

設置好之後就可以啟動服務了

sudo systemctl start danted

如果有修改檔案需要重啟服務可以用以下的方式

sudo systemctl daemon-reload && sudo systemctl restart danted


啟動完畢之後檢查一下服務狀態是否在 runing 狀態

sudo systemctl status danted --no-pager -n 10

然後就可以測試一下 sock 代理是否可用了

curl --socks5 localhost:1080 http://ipinfo.io/ip; echo


最後確認一下經由外部IP的連接

curl --socks5 "$(hostname -I|cut -f1 -d' '):1080" http://ipinfo.io/ip; echo

這裡有成功顯示跳轉的IP就是完成了



設置開機時自動啟動

原則上加入 systemctl 就行了

sudo systemctl enable danted


從其他電腦測試

這邊選用 powershell 指令當範例,能連上就是可以用了

curl.exe --socks5 192.168.3.89:1080 http://ipinfo.io/ip

指令中的 IP: 192.168.3.89 記得改成你自己的機器的 IP

至此就完成摟~






進階:: 自動啟動 danted 時讓他等待 wg1 連接完成

更進階的讓 danted 自動啟動時會先等待 wg1 連線成功才啟動的方式

機器的性能不要太差不用特別設定不會卡到,有問題在設定也行。具體表現的情況就是重啟後 danted 啟動時不到虛擬網卡 wg1 而失敗 


首先編輯一下設定

sudo nano /lib/systemd/system/danted.service

然後找到 After=network.target 把它取代成下面這樣

#After=network.target
After=network.target wg-quick@wg1.service
Requires=wg-quick@wg1.service

這表示自動啟動 danted 時會順帶啟動 wg1 並且等待他完成,自己要記得這裡有改過


然後存檔離開,並重啟服務 (需要先關閉 wg1)

sudo wg-quick down wg1 && sudo systemctl daemon-reload && sudo systemctl restart danted


最後確認一下經由外部IP的連接

curl --socks5 "$(hostname -I|cut -f1 -d' '):1080" http://ipinfo.io/ip; echo

沒問題的話就完成了

重新啟動可以輸入 sudo reboot 重啟一下測試成果



進階2:: 向區網廣播自身的 hostname

由於IP可能會變動,或是不好記住可以多裝一個套件 avahi-daemon 廣播主機名稱

這樣一來下一步設定代理伺服器的時候就不用記住 IP 了,直接設置這台主機名即可


不需要什麼設定,就是安裝並設定開機啟動而已

sudo apt install avahi-daemon -y
sudo systemctl enable avahi-daemon
sudo systemctl start avahi-daemon

再來就可以不用輸入IP而是輸入本機名稱即可,不知道名稱是什麼可以打指令 hostname 即可以查詢




進階3:: 簡易管理批次檔案

自己寫了兩個方便切換的,沒特別考量什麼只是方便能切隨意地的東西而已

2025-06-29 發現有個更好用的 wireproxy 這個直接可以解決自己管理兩個服務的困擾,以及可以避免本機IP不會被跳轉


proxy-disable.sh

#!/bin/bash

set -e

DISABLE_BOOT=0

for arg in "$@"; do
    case "$arg" in
        -b|--disable-boot)
            DISABLE_BOOT=1
            ;;
    esac
done

# 先關掉 danted
sudo systemctl stop danted

if [[ $DISABLE_BOOT -eq 1 ]]; then
    sudo systemctl disable danted
fi

# 如果 wg0 存在,關掉 WireGuard
if ip link show wg0 &>/dev/null; then
    sudo wg-quick down wg0
fi
# 如果 wg1 存在,關掉 WireGuard
if ip link show wg1 &>/dev/null; then
    sudo wg-quick down wg1
fi

# 關閉開機自動啟動
if [[ $DISABLE_BOOT -eq 1 ]]; then
    sudo systemctl disable wg-quick@wg1
fi

echo -e "🌐 外部 IPv4:\033[1;33m$(curl -4 -s ifconfig.me)\033[0m"


proxy-enable.sh

#!/bin/bash

set -e

ENABLE_BOOT=0

for arg in "$@"; do
    case "$arg" in
        -b|--enable-boot)
            ENABLE_BOOT=1
            ;;
    esac
done

# 如果 wg0 存在,關掉 WireGuard
ip link show wg0 &>/dev/null && sudo wg-quick down wg0

# 開啟 WireGuard(如果沒開才開)
ip link show wg1 &>/dev/null || sudo wg-quick up wg1
# 重新載入 systemd 並重啟 danted
sudo systemctl daemon-reload
sudo systemctl restart danted

if [[ $ENABLE_BOOT -eq 1 ]]; then
    sudo systemctl enable wg-quick@wg1
    sudo systemctl enable danted
fi

sleep 1

proxy="$(hostname -I | cut -f1 -d' '):1080"
echo -ne "SOCKS5 代理:\033[1;90m$proxy\033[0m → IP:"
echo -ne "\033[38;5;39m"
curl --socks5 "$proxy" -s http://ipinfo.io/ip
echo -e "\033[0m"



沒有留言:

張貼留言