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