задний план
Как программист, дома есть более-менее серые компьютеры.Если простаивающий компьютер превратить в сервер, он не только имеет хорошую конфигурацию, но и может быть использован для различных тестов, это было бы лучше. Но как устройства в локальной сети могут быть доступны из внешней сети? Это достигается за счет проникновения в интранет.
проникновение в интранетNATДля проникновения есть много часто используемых инструментов, таких как ngrok, peanut shell, frp и т.д., т.к. я использую frp, что также является темой этой статьи.
NAT — это метод перезаписи IP-адресов при прохождении IP-пакетов через маршрутизатор или брандмауэр. Поскольку текущее количество IP-адресов общедоступной сети ограничено, страна не может назначить IP-адрес общедоступной сети каждому устройству, поэтому несколько компьютеров могут использовать IP-адрес общедоступной сети только для внешней связи, что требует преобразования сети, и цель NAT именно в этом .
Основной принцип реализации
frp делится на сервер и клиент.Первый работает на сервере с публичным IP,второй работает на устройстве в локальной сети.По умолчанию сначала сервер открывает 7000 порт,а потом клиент подключиться к нему.
При этом клиент может открыть порт для ssh и сопоставить его с портом на сервере, чтобы при обращении терминала к порту сервера он автоматически переадресовывался клиенту.
В дополнение к порту ssh, frp также поддерживает веб-порт для получения доступа по http.
Установите и используйте
В настоящее время мне нужен один сервер общедоступной сети и один сервер интрасети.Мой сервер интрасети переустановил систему linux, что удобно для тестирования различных инструментов.
Конфигурация установки сервера
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar zxvf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64/
Конфигурационный файл сервера — frps.ini, который по умолчанию привязан к порту 7000. Если вы покупаете облачный сервер, обратите внимание на открытие порта 7000.
[common]
bind_port = 7000
Запустите службу frp через бинарный файл fprs.
./frps -c ./frps.ini
Следующее приглашение указывает на то, что установка прошла успешно.
2020/05/15 22:16:29 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/05/15 22:16:29 [I] [root.go:209] start frps success
2020/05/15 22:16:38 [I] [service.go:432] [e3c5096bd4291972] client login info: ip [14.114.230.168:44422] version [0.24.1] hostname [] os [linux] arch [amd64]
2020/05/15 22:16:38 [I] [tcp.go:63] [e3c5096bd4291972] [ssh] tcp proxy listen port [7001]
2020/05/15 22:16:38 [I] [control.go:445] [e3c5096bd4291972] new proxy [ssh] success
Конфигурация установки клиента
Вытащите свой сломанный компьютер и загрузите frp таким же образом.
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar zxvf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64/
Файл конфигурации для клиента — frpc.ini.
[common]
server_addr = 127.0.0.1
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
common - это общая конфигурация
- server_addr — это IP-адрес сервера общедоступной сети.
- server_port — это порт 7000, настроенный для общедоступного сервера.
ssh для доступа к командной строке терминала
- тип подключения, по умолчанию tcp
- local_ip локальный IP
- local_port номер порта для ssh, по умолчанию 22
- Порт сервера, сопоставленный remote_port, который по умолчанию перенаправляется на порт клиента 22 при доступе к этому порту.
запустить клиентский процесс
./frpc -c ./frpc.ini
Если присутствуют следующие подсказки, это означает, что подключение к серверу прошло успешно.
2020/05/15 22:34:49 [I] [service.go:282] [9bc650122a538aab] login to server success, get run id [9bc650122a538aab], server udp port [0]
2020/05/15 22:34:49 [I] [proxy_manager.go:144] [9bc650122a538aab] proxy added: [ssh]
2020/05/15 22:34:49 [I] [control.go:179] [9bc650122a538aab] [ssh] start proxy success
контрольная работа
После завершения запуска вы можете подключиться к серверу интрасети через ssh.
ssh -p 6000 enoch@xxx.xx.xxx.xxx
Оригинальная ссылка:Hiranoahah.com/2020/05/13/…
Меня зовут Пинг Йе, это проект с открытым исходным кодом, ориентированный на развитие технологии Gopher."иди домой"
Спасибо за просмотр.Если вы считаете, что статья была вам полезна, обратите внимание на паблик-аккаунт "Pingye", посвященный языку Go и техническим принципам.