Установка службы tun2socks на OPNsense

Network OPNSense

Обсуждение тут

Это гугл перевод с китайского. Скопировано отсюда

Подготовьте исполняемые файлы и файлы конфигурации.

Перейдите по адресу xjasonlu/tun2socks, чтобы загрузить последнюю версию исполняемого файла для FreeBSD tun2socksв удобное для вас место. Разместите это здесь /usr/local/tun2socks.

Создайте новый файл конфигурации /usr/local/tun2socks/config.yaml и заполните следующее содержимое:

# debug / info / warning / error / silent
loglevel: info

# URL format: [protocol://]host[:port]
proxy: socks5://192.168.3.10:7891

# URL format: [driver://]name
device: tun://proxytun2socks0

# Maximum transmission unit for each packet
mtu: 1500

# Timeout for each UDP session, default value: 60 seconds
udp-timeout: 120s

Запустите его в папке ./tun2socks -config ./config.yaml, чтобы проверить правильность файла конфигурации. Ctrl+C прерывает текущую программу.


Создать новый служебный файл

Создайте новый файл /usr/local/etc/rc.d/tun2socks и заполните следующее:

#!/bin/sh

# PROVIDE: tun2socks
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="tun2socks"
rcvar="tun2socks_enable"

load_rc_config $name

: ${tun2socks_enable:=no}
: ${tun2socks_config:="/usr/local/tun2socks/config.yaml"}

pidfile="/var/run/${name}.pid"
command="/usr/local/tun2socks/tun2socks"
command_args="-config ${tun2socks_config} > /dev/null 2>&1 & echo $! > ${pidfile}"

start_cmd="${name}_start"

tun2socks_start()
{
    if [ ! -f ${tun2socks_config} ]; then
        echo "${tun2socks_config} not found."
        exit 1
    fi
    echo "Starting ${name}."
    /bin/sh -c "${command} ${command_args}"
}

run_rc_command "$1"

Дайте разрешение на запуск chmod +x /usr/local/etc/rc.d/tun2socks.

Если вы tun2socks поместили исполняемые файлы и файлы конфигурации в другое место, не забудьте изменить соответствующее содержимое в файлах.

Создайте /etc/rc.conf и добавьте следующий контент:

tun2socks_enable="YES"

Создайте новый файл конфигурации

Создайте новый файл /usr/local/opnsense/service/conf/actions.d/actions_tun2socks.confи заполните следующее:

[start]
command:/usr/local/etc/rc.d/tun2socks start
parameters:
type:script
message:starting tun2socks

[stop]
command:/usr/local/etc/rc.d/tun2socks stop
parameters:
type:script
message:stopping tun2socks

[restart]
command:/usr/local/etc/rc.d/tun2socks restart
parameters:
type:script
message:restarting tun2socks

[status]
command:/usr/local/etc/rc.d/tun2socks status; exit 0
parameters:
type:script_output
message:request tun2socks status

Запустите service configd restart, чтобы перезапустить configd службу, чтобы применить изменения.


Новый плагин

Ссылка: Использование плагинов — Документация OPNsense

Создайте новый файл /usr/local/etc/inc/plugins.inc.d/tuntosocks.incи заполните следующее:

<?php

/*
 * Copyright (C) 2017 EURO-LOG AG
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * register service
 * @return array
 */
function tuntosocks_services()
{
    global $config;

    $services = array();
    $services[] = array(
        'description' => gettext('tun2socks gVisor TCP/IP stack'),
        'configd' => array(
            'restart' => array('tun2socks restart'),
            'start' => array('tun2socks start'),
            'stop' => array('tun2socks stop'),
        ),
        'name' => 'tun-socks',
        'pidfile' => '/var/run/tun2socks.pid'
    );
    return $services;
}

function tuntosocks_syslog()
{
    $logfacilities = array();
    $logfacilities['tun2socks'] = array(
        'facility' => array('tun2socks'),
    );
    return $logfacilities;
}

Используйте pluginctl -s для чтения и загрузки плагинов. Если служба появляется в списке вывода tun-socks и отображается в службах веб-интерфейса tun-socks, и если вы нажмете «Выполнить» для ее успешного запуска, это означает, что плагин успешно зарегистрирован.


Запуск службы на ранней стадии

Ссылка: Параметры загрузки/автозапуска — документация OPNsense

Создайте файл /usr/local/etc/rc.syshook.d/early/60-tun2socks, убедившись, что число перед ним не пересекается с существующим файлом в папке. Заполните следующее:

#!/bin/sh

# Start tun2socks service
/usr/local/etc/rc.d/tun2socks start

Дайте исполняемому файлу разрешения chmod +x /usr/local/etc/rc.syshook.d/early/60-tun2socks.

Затем перезагрузите систему и проверьте, tun2socksнормально ли она запускается.


Создайте новый порт и настройте шлюз.

Ссылка: opnsense использует прозрачный прокси и разгрузку — Форум OPNsense

В разделе «Интерфейсы» ‣ «Назначения» создайте только что созданное устройство TUN в качестве нового порта и сохраните настройки.

В Интерфейсы ‣ [только что добавленный сетевой порт] выполните следующие настройки и сохраните приложение:

ПараметрЦенить
Давать возможностьВключить интерфейс
Описаниеtun2socks
Тип конфигурации IPv4Статический IPv4
IPv4-адрес10.0.3.1/24

Адрес IPv4 должен отличаться от используемого в данный момент адреса локальной сети.

В Система ‣ Шлюзы ‣ Одиночный добавьте шлюз:

ПараметрЦенить
ИмяTUN2SOCKS_PROXY
Интерфейсtun2socks
Адрес семьиIPv4
IP-адрес10.0.3.2
Отключить мониторинг шлюзаИстинный

Сохраните и примените.

Примечание интерфейс всегда долже быть запущен после службы, иначе не работает