요구사항은 다음과 같습니다.
먼저 로컬에서 생성된 요청/패킷 대상 IP를 로 변경합니다
localhost
.172.17.0.1:7199
->
127.0.0.1:7199
그런 다음 이 요청/패킷을 로컬 프록시 포트(예:
socks-proxy
포트/redsocks
12345
포트) 로 리디렉션합니다.
이 작업을 수행하려면 어떻게 해야 합니까 iptables
? 또는 다른 도구를 사용할 수 있습니까?
다음은 좀 더 자세한 설명입니다.
두 대의 서버 가 있습니다 server1 - 172.17.0.1
. 에서 포트( ) server2 - 172.17.0.2
에 액세스해야 합니다 . 서버에서 원격 JMX를 비활성화했기 때문에 SSH 로컬 전달을 통해 서버에 액세스할 수 없습니다(포트에 액세스해야 함). 그래서 SSHocks 에이전트를 생성하고 구성했습니다.JMX
7199
server1
server2
server1
server2
7199
localhost
server2
레드 삭스도구. 잘 달리고 있어요.
# run socks proxy from service2
ssh -v -N -D 9999 [email protected]
# configure socks proxy with Redsocks in service2
redsocks {
// redsocks listening port
local_ip = 127.0.0.1;
local_port = 12345;
// socks proxy
ip = 127.0.0.1;
port = 9999;
type = socks5;
}
# configure iptable rules to route the packets to Redsocks in service2
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp --dport 7199 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner <user id> -j REDSOCKS
이제 (예를 들어 ) 127.0.0.1:7199
에서 연결하면 JMX 포트( ) 에 연결됩니다 . Redsocks는 패킷을 viaocks 프록시 로 올바르게 라우팅합니다 .service2
telnet localhost 7199
7199
server1
server1
또 다른 부탁이 있습니다. 패킷이 IP 주소 service1
(예 : )와 함께 제공되면 이를 localhost( )로 리디렉션해야 합니다. 예를 들어, 에서 연결하는 경우 sock 프록시를 통해 액세스 하려면 JMX 포트 로 리디렉션해야 합니다 . IP 주소 리디렉션은 일반적으로 다음 규칙 중 하나를 사용하여 수행할 수 있습니다 . (레드삭스와 관련된) 다른 규칙이 있기 때문에 작동하지 않습니다.172.17.0.1:7199
127.0.0.1:7199
172.17.0.1:7199
service2
127.0.0.1:7199
service1
iptables
iptables
# redirect with host
iptables -t nat -A OUTPUT -p tcp -d 172.17.0.1 -j DNAT --to-destination 127.0.0.1
# redirect with host and port
iptables -t nat -A OUTPUT -p tcp -d 172.17.0.1 --dport 7199 -j DNAT --to-destination 127.0.0.1:7199
localhost
이 경우 IP 주소 리디렉션을 수행하는 방법은 무엇입니까?