"redir" duas portas para duas portas

Iniciado por bred81, 31 de Maio de 2013, 15:12

tópico anterior - próximo tópico

bred81

Então, pessoal, eu to com a seguinte necessidade:
Preciso redirecionar o tráfego da porta 8081 para 8080 e da 1522 pra 1521 (sim, é o oracle xe).
Com o comando redir (sudo apt-get install redir), é só:
redir --syslog --lport=x --cport=y

No caso, se eu fizer o comando duas vezes, ele diz que o bind já está sendo usado.
Para contornar isso, poderia fazer:
redir --syslog --lport=8081,1522 --cport=8080,1521
???
O redirecionamento da porta 8081 está funcionando, mas, não tenho como testar, hoje, o da prota 1522. Talvez só no final da semana que vem.
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

zekkerj

Desculpe, vc quer direcionar de onde pra onde?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

bred81

O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

zekkerj

Mas de onde pra onde? É na própria máquina? Dá pra fazer redirecionamentos com o iptables (é uma linha, no máximo 2) mas antes é preciso saber qual máquina é o destino do redirecionamento. Além disso, é preciso saber em que condições deve ser redirecionado, p.ex. se vem da rede local, deve redirecionar ou não?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

bred81

Citação de: zekkerj online 01 de Junho de 2013, 12:21
Mas de onde pra onde? É na própria máquina? Dá pra fazer redirecionamentos com o iptables (é uma linha, no máximo 2) mas antes é preciso saber qual máquina é o destino do redirecionamento. Além disso, é preciso saber em que condições deve ser redirecionado, p.ex. se vem da rede local, deve redirecionar ou não?
Perdão, está certíssimo. Eu achei que dizer "oracle-xe" ia responder porque era só isso que estava pensando. Vou explicar um pouco mais:
Eu estou instalando o Oracle-XE 10 (último com 32b) numa máquina virtual (virtual-box) gerenciada pelo Vagrant. Sua configuração padrão é fazer NAT. Por causa disso, preciso abrir algumas portas.
O APEX do Oracle roda na porta 8080 e o listener na porta 1521. Infelizmente, devido a sei-lá-o-que (não entendo nem porque alguém vai querer usar Oracle, mas, tudo bem), ele só aceita conexões loocalhost para estes serviços. Por causa disso, liberei o tráfego pelas portas 8081 e 1522, dentro dessa máquina, para ela mesma, devo redirecionar para a 8080 e 1521, para ser ele acessando ele mesmo.
Quando usei o comando acima, a porta 8081 estava sendo redirecionada para a 8080 e estava funcionando, mas, não estava podendo testar o listener, pois, a aplicação que usa ela ainda não está configurada.
Poder ser por iptables, até pode, desde que ele acesse como "localhost" OU alguém saiba como retirar essa restrição do Oracle...
(Sim, to fazendo um workaround)
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

zekkerj

#5
Citarnão entendo nem porque alguém vai querer usar Oracle, mas, tudo bem
Pq é de longe o melhor banco de dados do mercado. também é o mais caro, mas...

CitarInfelizmente, devido a sei-lá-o-que (...), ele só aceita conexões loocalhost para estes serviços.
Isso pode ser algum problema na configuração do processo listener.

O problema que vc tem aí é que o Ubuntu não é homologado pra rodar o Oracle. Uma pena; do contrário, poderia jogar essa questão na OTN e ter uma boa dica sobre como resolver.

Então, se eu entendi direito, vc quer receber conexões na porta 1522/tcp, e redirecionar p/ a porta 1521 da mesma máquina, correto? Dá pra fazer com duas linhas.

sudo iptables -A PREROUTING -p tcp --dport 1522 -j REDIRECT --to-port 1521
sudo iptables -A INPUT -p tcp -m multiport --dport 1521,1522 -j ACCEPT
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

bred81

#6
Beleza. Vou tentar aqui e já já posto o resultado!
---------------
Citação de: zekkerj online 01 de Junho de 2013, 20:55
Citarnão entendo nem porque alguém vai querer usar Oracle, mas, tudo bem
Pq é de longe o melhor banco de dados do mercado. também é o mais caro, mas...

CitarInfelizmente, devido a sei-lá-o-que (...), ele só aceita conexões loocalhost para estes serviços.
Isso pode ser algum problema na configuração do processo listener.

O problema que vc tem aí é que o Ubuntu não é homologado pra rodar o Oracle. Uma pena; do contrário, poderia jogar essa questão na OTN e ter uma boa dica sobre como resolver.
Sobre o banco: há, o uso que estão dando é o mesmo que teria se fosse um MySQL ou PostGRES da vida...
=(
Pena que não é homologado mesmo...
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

bred81

#7
Bom, o meu funcionou.
Fui tentar usar o comando "nc" para testar a porta 1521 antes de colocar o comando do iptables e ele dizia que já estava em uso!

Mas, valeu!
Depois eu vou ver qual solução usar. Agora, lá vou eu configurar a p... do grails que não quer funcionar...

=/
Mal gente, eu falei cedo demais. O erro estava na minha aplicação, não tava funcionando. Fui tentar usar o comando que o zekkerj me passou, mas continua me retornando o seguinte:
Citarvagrant@precise32:~$ sudo iptables -A PREROUTING -p tcp --dport 8081 -j REDIRECT --to-port 8080
iptables: No chain/target/match by that name.

To dando uma lida aqui no manual pra ver se acho aonde está o erro, mas to meio perdido...
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

zekkerj

falha minha também: o comando tem um "-t nat", que eu esqueci de passar.

Comando corrigido:

sudo iptables -t nat -A PREROUTING -p tcp --dport 8081 -j REDIRECT --to-port 8080
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D