Как выполняется «Пересылка также может выполняться через сокеты Unix»?

Я заглянул в папку Linux Mint /var/lib/dhcp/ (на базе Ubuntu 14.04), и единственный файл там был пуст.

Но перебирая все файлы, я нашел:

  • /var/lib/NetworkManager/dhclient-xxxxxx-xxxx-xxxx-eth0.lease
    (с х почти случайными буквами и цифрами) с fixed-address xxx.xxx.... строка, похожая на вставленный файл из ответа linuxfan'а

  • записи в /var/log/syslog с IP-адресом (например, здесь 192.168.1.2), вы можете выбрать один из них (возможно, последний, если он часто меняется)

    Jan 8 17:49:45 mint dhclient: DHCPREQUEST of 192.168.1.2 on eth0 to 255.255.255.255 port 67 (xid=0xXXXXXXXX)
    Jan 8 17:49:45 mint dhclient: DHCPOFFER of 192.168.1.2 from 192.168.1.1
    8 янв 17:49:45 mint dhclient: DHCPACK of 192.168.1.2 from 192.168.1.1
    Jan 8 17:49:45 mint dhclient: привязка к 192.168.1.2 -- обновление через 38149 секунд.
    Jan 8 17:49:45 mint NetworkManager[1363]: адрес 192.168.1.2
    Jan 8 17:49:45 mint avahi-daemon[1117]: Joinining mDNS multicast group on interface eth0.IPv4 with address 192.168.1.2.
    Jan 8 17:49:45 mint avahi-daemon[1117]: Регистрация новой адресной записи для 192.168.1.2 на eth0.IPv4.

Или, если вы используете bash или другой сценарий оболочки или что-то дружественное оболочке, вот удобный для работы grep & cut способ получить ip из ifconfig, измените eth0 на то, что вы предпочитаете, или даже -a для всех.

ifconfig eth0 | grep "inet addr" | cut -d : -f 2 | cut -d ' ' -f 1

Это займет не намного больше времени, чем grep-ирование одного файла, вышеуказанное занимает real 0m0.002s, user 0m0.000s, sys 0m0.000s, в то время как grep-ing one file takes real 0m0.001s, user 0m0.000s, sys 0m0. 000s

2
05.02.2019, 19:37
1 ответ

Давайте посмотрим на реальную ssh(1)справочную страницу, а не на эту веб-страницу:

 -R [bind_address:]port:host:hostport
 -R [bind_address:]port:local_socket
 -R remote_socket:host:hostport
 -R remote_socket:local_socket

Существует четыре формы опции -R, и та, которую вы процитировали, является первой. Он перенаправляет TCP-порт в системе, которая имеет удаленный конец SSH-соединения, на указанный хост и номер TCP-порта на локальной стороне соединения.

Вторая форма описывает, как перенаправить удаленный порт TCP на локальный сокет Unix:

ssh -R 1234:/tmp/local_socket user@remote_host

Другими словами, когда что-то подключается к TCP-порту 1234 на remote_host, соединение будет перенаправлено на сокет Unix /tmp/local_socketна локальном хосте.

Третья форма описывает, как сделать это наоборот: удаленный сокет к TCP-порту на локальной стороне:

ssh -R /tmp/remote_socket:1234:somehost user@remote_host

Здесь процесс на удаленном хосте _может использовать сокет Unix /tmp/remote_socket, и соединение будет проходить через SSH-соединение с локальной стороной, а затем через обычное TCP-соединение с TCP-портом 1234 из somehost..

Четвертая форма описывает переадресацию с удаленного сокета Unix на локальный:

ssh -R /tmp/remote_socket:/tmp/local_socket user@remote_host

Здесь процесс в remote_hostможет открыть сокет Unix в /tmp/remote_socketдля подключения к /tmp/local_socketна локальном хосте.

6
27.01.2020, 21:58

Теги

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