transmission/web iptables vpn netns, access netns web app from LAN

Вы могли бы увеличить многословность и получить список идентифицированных файлов, например, для Python:

cloc -v=3 . | grep 'call_counter(.* Python)'

Образец вывода:

-> call_counter(./data/action_i18n_strings.py, Python)
-> call_counter(./files/usr/share/nemo/actions/myaction.py, Python)

А затем вручную проверить файлы, прочитав их.

Счетчик call_counter вызывается один раз для каждого подходящего файла.


Версии до 1.64 идентифицировали только скрипты Python, проверяя наличие расширения .py . Начиная с версии 1.64 cloc идентифицирует Python также по shebang:

Добавлены python, python2.6, python2.7, python3, python3.3, python3.4 в качестве исполняемых файлов сценария для идентификации файлов Python, которые не заканчиваются на .py.

Что касается последней dev. версии, она ищет эти окружения:

%{$rh_Language_by_Script}    = (             # {{{1
            'awk'      => 'awk'                   ,
            'bash'     => 'Bourne Again Shell'    ,
            'bc'       => 'bc'                    ,# calculator
            'crystal'  => 'Crystal'               ,
            'csh'      => 'C Shell'               ,
            'dmd'      => 'D'                     ,
            'dtrace'   => 'dtrace'                ,
            'idl'      => 'IDL'                   ,
            'kermit'   => 'Kermit'                ,
            'ksh'      => 'Korn Shell'            ,
            'lua'      => 'Lua'                   ,
            'make'     => 'make'                  ,
            'octave'   => 'Octave'                ,
            'perl5'    => 'Perl'                  ,
            'perl6'    => 'Perl'                  ,
            'perl'     => 'Perl'                  ,
            'miniperl' => 'Perl'                  ,
            'php'      => 'PHP'                   ,
            'php5'     => 'PHP'                   ,
            'python'   => 'Python'                ,
            'python2.6'=> 'Python'                ,
            'python2.7'=> 'Python'                ,
            'python3'  => 'Python'                ,
            'python3.3'=> 'Python'                ,
            'python3.4'=> 'Python'                ,
            'python3.5'=> 'Python'                ,
            'rexx'     => 'Rexx'                  ,
            'regina'   => 'Rexx'                  ,
            'ruby'     => 'Ruby'                  ,
            'sed'      => 'sed'                   ,
            'sh'       => 'Bourne Shell'          ,
            'swipl'    => 'Prolog'                ,
            'tcl'      => 'Tcl/Tk'                ,
            'tclsh'    => 'Tcl/Tk'                ,
            'tcsh'     => 'C Shell'               ,
            'wish'     => 'Tcl/Tk'                ,
            'zsh'      => 'zsh'                   ,
            );
# 1}}}

1
13.05.2017, 10:21
2 ответа

У меня почти точная настройка и проблема.

Насколько я могу судить, сеть с пространством имен просто не хочет, чтобы к ней был доступ извне. Вероятно, существует какое-то правило iptables, которое позволяет сопоставлять 192.168.1.*:9091с 10.200.200.2:9091, но я прибегал к использованиюsocatв качестве обходного пути, чтобы сделать сеть 10.200.200.*доступной через фактический IP-адрес,192.168.1.*

Я предполагаю, что 10.200.200.2— это IP-адрес, к которому привязан демон передачи rpc в пространстве имен nordvpn. Вы должны получить эту информацию, используя ip netns exec nordvpn ifconfig vpn1. Найдите значение inet addr.

Вы можете убедиться, что служба rpc работает, используя ip netns exec nordvpn transmission-remote --auth <username>:<password> -siдля получения информации о сеансе.

Затем соедините виртуальную сеть и реальную сеть для порта 9091с помощью socat :

.
socat tcp-listen:9091,reuseaddr,fork tcp-connect:10.200.200.2:9091

Вы также можете превратить его в демона для бедняков, запустив его как запланированное задание, используяat

echo 'socat tcp-listen:9091,reuseaddr,fork tcp-connect:10.200.200.2:9091 > /dev/null 2>&1' | at now

Обратите внимание, что аргумент forkдля socatсоздает несколько дочерних процессов. Вы можете остановить их позже, используяpkill -f 'socat tcp-listen:9091'

После этого вы сможете получить к нему доступ со своего рабочего стола, используя IP-адрес Ubuntu Box.

0
28.01.2020, 00:55

Извините, что некролирую это, но это подходит для релевантного поиска. Я следовал тому же руководству и имею те же проблемы. Ответ Кетвару мне не помог, поэтому мне пришлось немного покопаться.

Вот что я нашел:

сокат раствор:

sudo socat tcp-listen:9091,fork,reuseaddr exec:'ip netns exec vpn socat STDIO "tcp-connect:10.200.200.2:9091"',nofork

Спасибо автору с этого сайта:https://newbedev.com/port-forwarding-to-application-in-network-namespace-with-vpnза рабочее решение И служебный файл systemd , если вы хотите сохранить решение socat

решение iptables:

iptables -t nat -A PREROUTING -p tcp --dport 9091 -j DNAT --to-destination 10.200.200.2:9091
iptables -t nat -A POSTROUTING -p tcp --dport 9091 -j MASQUERADE

спасибо автору здесь:https://npre.wordpress.com/2012/09/15/port-forwarding-with-iptables/за понимание этого.

Я продолжал думать, что должна быть запись iptables через сетевое пространство имен, но я ошибался, эти две записи делают то, что требуется.

Надеюсь, это поможет тем, кто пытается настроить маршрутизацию портов из локальной сети в сетевое пространство имен.

0
23.08.2021, 08:54

Теги

Похожие вопросы