Я хочу прослушать новый порт на сервере Ubuntu.
У меня есть root-доступ.
netstat -an | grep "LISTEN "
Возвращает:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1270 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:29130 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
Я хочу запустить свой файл .js на порту 3000. Итак, я запустил команду:
nc -l 3000
Но потом нет выхода.
Я новичок в Ubuntu. Кто-нибудь может мне помочь с этим?
РЕДАКТИРОВАТЬ:
Я хочу прослушивать новый порт 3000 так же, как следующий порт:
tcp6 0 0 :::8080 :::* LISTEN
Если Вы выполняете команду nc -l 3000
nc
будет работать на переднем плане, и Вы не сможете сделать что-либо еще без остановки nc
таким образом, необходимо работать nc
как фоновая задача:
nc -l 3000 &
Сам сервер Ubuntu не будет прослушивать ни один порт. Службы приложений, установленные и запущенные на сервере, прослушивают порты. Например, по умолчанию:
Если вы хотите получить имена из служб, которые прослушивают порты в вашей системе, используйте netstat
с правами root через sudo
следующим образом:
$ sudo netstat -pna | grep "LISTEN " | grep '\<tcp\>'
tcp 0 0 0.0.0.0:6951 0.0.0.0:* LISTEN 8976/aria2c
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1589/mysqld
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 32285/redis-server
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 1279/memcached
tcp 0 0 127.0.0.1:8142 0.0.0.0:* LISTEN 1482/nodejs
tcp 0 0 127.0.0.1:6800 0.0.0.0:* LISTEN 8976/aria2c
tcp 0 0 127.0.0.1:81 0.0.0.0:* LISTEN 3286/docker-proxy
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 1218/systemd-resolv
tcp 0 0 127.0.0.1:4822 0.0.0.0:* LISTEN 1445/guacd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 77768/apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1339/sshd: /usr/sbi
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2805/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 77768/apache2
примечание:
127.0.0.1
означает loopback interface (localhost),0.0.0.0
означает все доступные интерфейсы (localhost, сетевые адаптеры и т.д.),192.168.1.100
или это может быть какой-то адрес IPv6.Если есть брандмауэр и вы хотите получить доступ к своим службам извне, вам необходимо разрешить входящий/исходящий трафик на порты, которые они прослушивают.
При использовании nc -l 3000
команда nc
сама начнет прослушивать порт 3000. ИМО, эта опция предназначена для тестовых целей, т. е. вы настраиваете брандмауэр или около того. .
Скажем, в терминале, который вы запустили:
$ nc -l 3000
Затем в другом терминале вы можете проверить, прослушивает ли что-то порт 3000:
$ nc -vz 0.0.0.0 3000
Connection to 0.0.0.0 3000 port [tcp/*] succeeded!
И все.
В качестве заключения:
Вы должны разработать свою службу (программу, скрипт, команду) для прослушивания на желаемом порту 3000, и когда этот порт не используется какой-либо другой службой, когда вы запускаете свою службу, она начнет прослушивать в порт.
С другой стороны, если вам нужно что-то постоянно слушать на :::3000
для проведения тестов, самый простой способ, на мой взгляд, это создать модуль systemd. Для этого:
Создайте /etc/systemd/system/listen-3000.service
:
sudo nano /etc/systemd/system/listen-3000.service
Как содержимое /etc/systemd/system/listen-3000.service
место:
[Единица измерения]
Description=Постоянное прослушивание в :::3000
After=network-online.target
[Услуга]
Пользователь=корень
ExecStart=/usr/bin/nc -l6 3000
ExecStop=/usr/bin/killall -s KILL nc
Перезапустить = всегда
Рестартсек=1
[Установить]
WantedBy=многопользовательская.цель
Включите и запустите listen-3000.service
:
sudo systemctl daemon-reload
sudo systemctl включить прослушивание-3000.service
sudo systemctl начать прослушивание-3000.service
sudo systemctl статус прослушивания-3000.услуга
Отключить и остановить listen-3000.service
:
sudo systemctl stop listen-3000.service
sudo systemctl отключить прослушивание-3000.service