Настраиваем клиент Outline на OpenWRT за 5 минут с помощью tun2socks

# Step 11: Создание скрипта /etc/init.d/tun2socks if [ ! -f "/etc/init.d/tun2socks" ]; then #Проверка наличия файла cat <<EOL > /etc/init.d/tun2socks #!/bin/sh /etc/rc.common USE_PROCD=1 # starts after network starts START=99 # stops before networking stops STOP=89 #PROG=/usr/bin/tun2socks #IF="tun1" #Интерфейс tun1 для избежания конфликтов с OpenVPN #OUTLINE_CONFIG="$OUTLINECONF" #LOGLEVEL="warning" #Уровень логгирования, только предупреждения и ошибки #BUFFER="64kb" #Размер буфера выбран исходя из вики tun2socks start_service() { procd_open_instance procd_set_param user root procd_set_param command /usr/bin/tun2socks -device tun1 -tcp-rcvbuf 64kb -tcp-sndbuf 64kb -proxy "$OUTLINECONF" -loglevel "warning" procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" procd_close_instance ip route add "$OUTLINEIP" via "$DEFGW" #Добавляет маршрут до сервера Outline echo 'route to Outline Server added' ip route save default > /tmp/defroute.save #Сохраняет действующий маршрут по умолчанию echo "tun2socks is working!" } boot() { # This gets run at boot-time. start } shutdown() { # This gets run at shutdown/reboot. stop } stop_service() { service_stop /usr/bin/tun2socks ip route restore default < /tmp/defroute.save #Восстанавливает действующий маршрут по умолчанию ip route del "$OUTLINEIP" via "$DEFGW" #Удаляет маршрут до сервера Outline echo "tun2socks has stopped!" } reload_service() { stop sleep 3s echo "tun2socks restarted!" start } EOL DEFAULT_GATEWAY="" #Спрашивает пользователя о назначении Outline маршрутом по умолчанию while [ "$DEFAULT_GATEWAY" != "y" ] && [ "$DEFAULT_GATEWAY" != "n" ]; do echo "Use Outline as default gateway? [y/n]: " read DEFAULT_GATEWAY done if [ "$DEFAULT_GATEWAY" = "y" ]; then cat <<EOL >> /etc/init.d/tun2socks #Заменяет текущий маршрут по умолчанию на Outline service_started() { # This function checks if the default gateway is Outline, if no changes it echo 'Replacing default gateway for Outline...' sleep 2s if ip link show tun1 | grep -q "UP" ; then ip route del default #Удаляет существующий маршрут по умолчанию ip route add default via 172.16.10.2 dev tun1 #Создает маршрут по умолчанию через прокси fi } start() { start_service service_started } EOL #Проверяет содержимое файла rc.local и добавляем при необходимости в rc.local скрипт для проверки маршрута по умолчанию при запуске if ! grep -q "sleep 20" /etc/rc.local; then sed '/exit 0/i\ sleep 20\ #Проверяет является ли Outline маршрутом по умолчанию или нет\ if ! ip route | grep -q '\''^default via 172.16.10.2 dev tun1'\''; then\ /etc/init.d/tun2socks start\ fi\ ' /etc/rc.local > /tmp/rc.local.tmp && mv /tmp/rc.local.tmp /etc/rc.local echo "All traffic would be routed through Outline" fi else #При выборе нет на вопрос маршрута, запускается этот вариант скрипта cat <<EOL >> /etc/init.d/tun2socks start() { start_service } EOL echo "No changes to default gateway" #Никаких изменений в маршрут по умолчанию fi echo 'script /etc/init.d/tun2socks created' chmod +x /etc/init.d/tun2socks fi