—
Обсуждение тут
—
Это гугл перевод с китайского. Скопировано отсюда
Подготовьте исполняемые файлы и файлы конфигурации.
Перейдите по адресу 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 службу, чтобы применить изменения.
Новый плагин
Создайте новый файл /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 |
| Отключить мониторинг шлюза | Истинный |
Сохраните и примените.
Примечание интерфейс всегда долже быть запущен после службы, иначе не работает