BG Development


  Reply to this topicStart new topicStart Poll

> nodejs websocket, Public acccess to local PC
bishkot
Публикувано на: 24-12-2020, 22:48
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 372
Регистриран на: 17.05.05



Здравейте , опитвам се от PC1 да се свържа с PC2 чрез websocket и двете PC-та не са в една мрежа.

CODE

//client
const WebSocket = require('ws');
const ws = new WebSocket('ws://MyPublicIP:8080');
ws.on('open', function open() {
 ws.send('something');
});

ws.on('message', function incoming(data) {
 console.log(data);
});


CODE

//server
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
 ws.on('message', function incoming(message) {
   console.log('received: %s', message);
 });

 ws.send('something');
});


дава грешка

CODE

errno: -4039,
 code: 'ETIMEDOUT',
 syscall: 'connect',
 address: 'моето ип',
 port: 8080


Добавих port forwarding в рутера и съответно inbound rule във firewall-a

Мнения? Другият ми въпрос е до колко по този начин би било съответното PC под заплаха за сугурността (провив, хакери и темподобни) с отворен порт и разрещен порт във firewall

Благодря
Мнения?
PMEmail Poster
Top
thrawn
Публикувано на: 26-12-2020, 16:30
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3054
Регистриран на: 17.01.17



Портовете не са дупки в компютъра, та да ги отваряш и затваряш. Реално те са число, номер на приложение. Чрез него ОС определя на кое приложение да предаде съответния пакет.
От тук, "отварянето" на порт не представлява никаква заплаха за сигурността на машината. Проблем би имало, ако приложението което се е регистрирало да получава пакетите за съответния порт е бъгаво. Това би дало хипотетична възможност за атака от вън.

Самия термин "отваряне" на порт значи, че трябва да се стартира приложение което да обработва съответните пакети. Конструкторът *WebSocket.Server* прави именно това. Само дето освен номер на порт би трябвало да приема и ИП адрес. Не съм запознат с node.js та не знам кой адрес се ползва по подразбиране (в твоя случай) но това е първото нещо което трябва да провериш. Обикновенно, имаш два адреса на едно PC адресът на мрежовата карта И адресът на loopback интерфейсът (127.0.0.1). Като по подразбиране би трябвало да се ползва loopback интерфейсът. Та при писане на сървърни приложения винаги трябва да внимаваш на кой интерфейс слушаш. Можеш да ползваш за адрес 0.0.0.0 така ще слушаш на ВСИЧКИ адреси които има машината.
Какво точно е положението при теб се проверява най-лесно с помощта на netstat.

Ако всичко с адресите е на ред трябва да провериш дали фаерлол не прави проблем. Това се проверява лесно с nmap (от вън).

Ако всичко с портовете изглежда на ред, но продължаваш да имаш проблеми, трябва да трасираш комуникацията в основните и етапи защото можеш да си режеш само изходящият трафик (ако си си играл с фаерлолите)
PMEmail Poster
Top
bishkot
Публикувано на: 26-12-2020, 17:02
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 372
Регистриран на: 17.05.05



Благодаря за отговора!

Рзрешил съм firewol-а. момента нещата работят след основния ми рутер.
Имам рутер 1 на wan порта на който идва кабела от ISP.
След рутер 1 имам още 2 рутера и т.н.

PC1 е вързан за лан порта на рутер1.
От всеки един PC вързана било то за рутер1 или рутер 2 се свързвам безпроблемно по ип-то на wan port-a на рутер1.

Това което установих обаче е че примерно комшията ако приемем че е на друг ISP и съвсем друга мрежа - той не може да се свърже.

Установих също че WAN IP-адресът на рутер е различен от моят Public IP. (четох че от там може да идва проблемът..... налага е реално, статично IP от ISP или VPN услуга)

Да разбирам ли че няма как да се случи това for free т.е. без реален(статичен) IP или VPN? Или къде другаде да търся проблема.
PMEmail Poster
Top
thrawn
Публикувано на: 26-12-2020, 17:52
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3054
Регистриран на: 17.01.17



За да се свържеш с машината си, съвсем логично, трябва да и знаеш адреса. Щом публичния ти адрес се различава от тоя който ти е зададен на рутера, то значи, че ползваш частен адрес. С други думи, не можеш да го достигнеш от вън.

Демек, или си тестваш само локално, или ползваш ВПН за да достъпиш машината или просто си взимаш публичен адрес от доставчикът (не е нужно да е статичен).

Това мнение е било редактирано от thrawn на 26-12-2020, 17:53
PMEmail Poster
Top
deksy
Публикувано на: 13-01-2021, 18:11
Quote Post



Име: ДатБат
Група: Потребител
Ранг: Новопостъпил

Мнения: 23
Регистриран на: 28.09.15



Няма проблем локален адрес да се вижда на вън.
Направи си правилния port forwarding, тествай дали се вижда на вън адреса, после пиши в node.js там е лесно icon_smile.gif
PMEmail PosterUsers Website
Top
ici
Публикувано на: 13-01-2021, 18:44
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 17620
Регистриран на: 06.06.04



Възможно е клиентите на мрежата да са изолирани. Те имат достъп само до интернет.


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0