(외부 mysql 프록시를 향한 첫 번째 단계로) mysql의 로컬 연결(가상 머신에 있음)에서 외부 프록시(호스트에 있음)로 트래픽을 다시 라우팅한 다음 다시 가상 머신으로 라우팅한 다음 mysql 서버에 제공하기를 원합니다. . 내가 조작하고 싶은 유일한 것은 주로 webapp과 독립적인 mysql 구성(사용된 포트)이기 때문에 이 설정을 사용합니다.
대략 다음과 같아야 합니다.
MYSQLClient
|
:4446 incoming connection on port of guest (1)
+--------------:3305+ rerouted to host (2)
|
+:8888--------------+ which then routes it back to the guest (3)
|
:4444 which is then routed to the MYSQLServer port (4)
|
MYSQLServer
나는 다른 단계에 사용했다
(1) nc -k -l -v 4446 | nc 192.168.72.1 3305
(2/3) nc -k -l -v 3305 | nc 192.168.72.128 8888
(4) nc -k -l -v 8888 | nc localhost 4444
포트 4444에서 수신 대기하도록 mysql을 구성했습니다. 구성 파일에 대한 변경 사항을 최소한으로 유지하기 위해 외부 연결을 수신하도록 mysql을 구성하고 mysql이 만들어진 연결이 localhost에서 온 것으로 생각하도록 할 수도 있지만 (4)를 유지하고 싶습니다.
이제 제가 겪었던 문제에 대해 이야기해 보겠습니다.
임의의 명령 순서를 사용할 수 없습니다. 반대 순서를 사용해야 합니다. 그렇지 않으면 연결이 설정되지 않고 데이터를 보내려고 하자마자 연결이 끊어집니다. 게스트가 부팅되는 시간을 측정하는 것이 불가능해 보이기 때문에 이 설정을 자동화하려고 하면 큰 골칫거리가 됩니다.
mysql에서는 작동하지 않습니다. 그러나 mysqlserver 포트의 nc를 생략하면 Telnet이 작동합니다. 그러나 이 방법을 사용하면 Telnet을 사용하여 연결을 시도할 때 (4)가 중단됩니다. mysql 클라이언트에 연결하면 전혀 효과가 없으며 분명히 작동하지 않습니다. 연결이 설정되지 않으며 mysql 비밀번호를 입력한 후에는 아무 일도 일어나지 않습니다.
이 설정을 고려하면 제가 완전히 미쳤습니까? 그렇지 않다면 어떻게 (실제로) 작동하게 만들 수 있습니까?
CNC를 포함하지 않고 첫 번째 단락에서 설명한 전반적인 문제를 해결하는 솔루션은 CNC 설정을 수정하는 것만큼 기쁘게 받아들여질 것입니다. 위의 질문은 현재 솔루션에 대해서만 설명합니다.
답변1
nc는 더 가볍고 일회성 테스트에 적합하지만, 더 엄격한 사용을 위해서는 redir이 더 적합합니다. 보조 도구가 없고 더 복잡한 설정(예:시네트.
redir은 또한 고유한 재시도/오류 처리를 통해 하나의 TCP 포트를 다른 포트로 리디렉션하는 훌륭한 작업을 수행하는 매우 가벼운 도구입니다.
시스템의 IP 주소가 1.1.1.1이고 포트 80의 모든 트래픽을 IP 주소 2.2.2.2 및 포트 8080을 사용하는 원격 서버로 리디렉션한다고 가정합니다. 간단히 말해서 redir 유틸리티가 포트 80의 1.1.1.1에서 포트 8080의 2.2.2.2로 연결을 리디렉션하기를 원합니다. 우리는 다음과 같이 redir을 실행해야 합니다:
redir --laddr=1.1.1.1 --lport=80 --caddr=2.2.2.2 --cport=8080