소켓 연결이 거부되었지만(raspbian) 연결을 위해 포트가 열려 있습니다.

소켓 연결이 거부되었지만(raspbian) 연결을 위해 포트가 열려 있습니다.

내 클라이언트와 Raspbian 사이에 연결을 설정하고 싶습니다. 내 네트워크에서는 아무 문제 없이 언제든지 내 서비스에 연결할 수 있습니다. 이제 인터넷을 통해 내 서비스에 연결하고 싶습니다. 안타깝게도 인터넷 IP를 사용하여 연결하려고 하면 작동하지 않습니다.

client = new MqttClient("tcp://77.777.77.77:1883", "SendingdLoop");
            client.connect();

내 Java 애플리케이션에서는 연결이 거부되었다고 알려줍니다(따라서 시간 초과가 없음).

   Could not establish connection (32103) - java.net.ConnectException: Connection **refused**: connect          at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:75)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:538)
        at java.lang.Thread.run(Thread.java:722)
    Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:75)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
        at java.net.Socket.connect(Socket.java:579)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:66)

포트를 열려면 공식 지침을 따랐습니다. https://wiki.debian.org/iptables

내 항목은 다음과 같습니다

 -A INPUT -p tcp -m tcp --dport 1883 -j ACCEPT

iptables를 확인해보니,

iptables -L
 ACCEPT tcp -- anywhere anywhere  tcp dpt: 1883

규칙이 활성화된 것을 볼 수 있습니다.

그 밖에 구성해야 할 사항이 있나요?

답변1

"추가로 구성해야 할 것이 있나요?"

어쩌면 당신의 라우터 일 수도 있습니다. 당신은 명확한 답변을 제공할 만큼 충분한 정보를 제공하지 않았습니다. 당신이 한 것은 iptables 때문이 아니라는 점을 지적한 것뿐입니다. 아마도.

iptables 규칙이 처리되었습니다.~을 위한. 이것이 추가된 마지막 규칙() -A이고 이를 볼 때 목록의 마지막 규칙인 iptables -L경우 이전 규칙으로 대체될 수 있습니다. 예를 들어 목록이 다음과 같은 경우:

DROP everything
ACCEPT everything 

두 번째 규칙이 처리되기 전에 모든 것이 제거되므로 아무 것도 허용되지 않습니다. 더 정확하게 말하면 모든 것이 첫 번째 규칙 항목에서 일치하는 항목을 찾기 때문에 두 번째 규칙은 처리되지 않습니다.

답변2

mqtt브로커와 동일한 문제가 있었지만 vernemq다음을 추가하여 해결했습니다.

  1. $ sudo vmq-admin listener show

    o허용된 IP 및 포트 목록 표시vernemq

  2. $ sudo vmq-admin listener start port=1885 -a 0.0.0.0 --mountpoint /appname --nr_of_acceptors=10 --max_connections=20000

    IP와 새 포트를 추가합니다. 이제 문제없이 연결할 수 있습니다.

관련 정보