Problema ao encaminhar uma porta no OS X com pf

0

Estou executando uma máquina virtual xhyve (com docker), usando uma rede de ponte:

bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether a2:99:9b:01:6d:64
    inet 192.168.64.1 netmask 0xffffff00 broadcast 192.168.64.255
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en5 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 12 priority 0 path cost 0
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active

Eu quero encaminhar a porta 8000 no meu mac para o IP da VM, porta 8000. Estou usando o pfctl:

[~]$ echo "
rdr pass inet proto tcp from any to any port 8000 -> 192.168.64.9 port 8000
" | sudo pfctl -ef -
Password:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf already enabled

Agora, telnet para localhost 8000 diz "conexão recusada":

[~]$ telnet localhost 8000
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Network is unreachable
telnet: Unable to connect to remote host

Mas o telnet para "192.168.64.9" funciona:

[~]$ telnet 192.168.64.9 8000
Trying 192.168.64.9...
Connected to ebdev.io.
Escape character is '^]'.

Como posso encaminhar a porta 8000 neste caso?

    
por synic 06.04.2016 / 17:51

1 resposta

0

Eu tive sorte zero com a funcionalidade de redirecionamento no pfctl no OS X. Talvez haja algo sutil que esteja faltando também, mas você não está sozinho. O que funciona para mim é o encaminhamento de porta ssh. É um pouco menos conveniente, mas é fácil e sempre funciona. Basta digitar:

ssh 127.0.0.1 -L127.0.0.1:8000:192.168.64.9:8000

e enquanto essa sessão ssh estiver ativa, o encaminhamento de porta será funcional. Você pode deixar de fora "127.0.0.1" se você quiser vincular o soquete de escuta a todos os IPs em sua máquina, em vez de apenas vincular a localhost.

Se você descobrir por que as regras do rdr não estão funcionando, vamos todos saber, porque você definitivamente não é a única pessoa que vê esse comportamento.

    
por 12.12.2016 / 03:34