File Managment
Сеть и диагностика
(Проверка соединений, DNS, маршруты, порты)
ping - проверка доступности хоста и его задержки
Пример: ping 95.31.10.90
nmap - сканирование портов и устройств в сети
Пример: nmap 95.31.10.90
nslookup - запрос DNS-записей (A - IPv4; AAAA - IPv6; MX - какой почтовый сервер используется;
NS - DNS-серверы, отвечающие за домен и хранящие его DNS-записи; PTR - домен по ipv4 или ipv6; TXT - доп. информация, примечания).
Пример: nslookup -type=MX yandex.ru 8.8.8.8
dig - расширенный DNS-запрос (детальный вывод)
Пример: dig @8.8.8.8 yandex.ru MX +short
host - упрощённый DNS-запрос
Пример: host google.com
traceroute - трассировка маршрута до хоста
Пример: traceroute chatgpt.com
mtr - ping + traceroute в реальном времени с отображением потерь пакетов и задержек. Требует sudo
Пример: sudo mtr yandex.ru
curl - отправка HTTP/HTTPS-запросов, тестирование API и скачивание данных. (-i = получить тело ответа и HTTP-заголовки;
-I = получить только HTTP-заголовки; -L = разрешить перенаправление; -X = указать HTTP-метод, по дефолту используется GET;
-o = сохранить ответ сервера в файл; -d = отправить данные в теле HTTP-запроса; -H = добавить HTTP-заголовок)
Пример 1: curl -L http://95.31.10.90
Пример 2: curl -o data.html http://95.31.10.90
Пример 3: curl -X POST -d "name=test" https://yandex.ru
Пример 4: curl -X PATCH -H "Content-Type: application/json" -d '{"status": "active"}' https://yandex.ru
wget - скачивание файлов по HTTP, HTTPS и FTP. (-O = сохранить файл под указанным именем; -q = тихий режим)
Пример: wget -O plugin.jar "https://www.spigotmc.org/resources/vault.34315/download?version=344916"
whois - информация о владельце домена или IP
Пример: whois 95.31.10.90
ss - открытые сокеты / соединения / порты (нет на macOS). Требует sudo для процессов. (-t = tcp; -u = udp; -l = только слушающие;
-a = все сокеты; -p = показывать PID и имя процесса, который открыл порт; -r = домены вместо ip; -n = ip вместо доменов)
Пример: sudo ss -tulpn
netstat - открытые сокеты / соединения / порты. Требует sudo для процессов. (-t = tcp; -u = udp; -l = только слушающие;
-a = все сокеты; -p = показывать PID и имя процесса, который открыл порт; -r = таблица маршрутизации; -n = ip вместо dns имен)
Пример 1: sudo netstat -tuap
Пример 2: netstat -rn
ufw - управление firewall (нет на macOS). Требует sudo
enable = включить firewall
disable = выключить firewall
status = показать статус и правила
status numbered = показать статус и пронумерованные правила
status verbose = показать статус, дополнительную информацию и правила
reload = перечитать правила
reset = удалить все правила
allow = разрешить соединение
deny = запретить соединение (без ответа)
reject = отклонить соединение (с уведомлением)
delete = удалить правило по номеру
limit = ограничить частые подключения от одного IP-адреса
default = установить политику по умолчанию (allow/deny/reject incoming/outgoing/routed)
app list = список профилей сетевых сервисов
Пример 1: sudo ufw enable
Пример 2: sudo ufw reset
Пример 3: sudo ufw allow 2235/tcp
Пример 4: sudo ufw reject 2235/tcp
Пример 5: sudo ufw delete 2
Пример 6: sudo ufw limit 22/tcp
Пример 7: sudo ufw default deny incoming
Пример 8: sudo ufw app list
Пример с конструкцией from-to: sudo ufw deny from 95.31.10.128/25 to 192.168.88.10 port 22 proto tcp
(запрещаем соединение по порту 22 с протоколом TCP для айпи сетевого интерфейса 192.168.88.10 от второй
половины подсети 95.31.10.0, то есть от 95.31.10.128 - 95.31.10.255)
route - управление таблицей маршрутизации операционной системы. Требует sudo для изменения маршрутов
Команды:
add = добавить новый маршрут
delete = удалить существующий маршрут
change = изменить существующий маршрут
get = показать маршрут до указанного адреса (маршрутизатор и сетевой интерфейс)
Параметры:
-n = не преобразовывать IP-адреса в имена хостов
-host = создать маршрут для конкретного хоста (одного IP-адреса)
-net = создать маршрут для целой сети
-interface = использовать указанный сетевой интерфейс
-gateway = использовать указанный шлюз
Пример 1: sudo route -n add -host 172.65.173.152 -interface utun3
(добавляем маршрут для хоста 172.65.173.152 через сетевой интерфейс utun3, не преобразовывая IP-адреса в имена хостов)
Пример 2: sudo route delete -net 8.8.8.128/25 -gateway 192.168.1.2
(удаляем маршрут для второй половины подсети 8.8.8.0, а именно 8.8.8.128 - 8.8.8.255, через маршрутизатор 192.168.1.2)
Пример 3: sudo route -n change -host 95.31.10.90 -gateway 192.168.1.1
(изменяем маршрут для хоста 95.31.10.90, изменяя адрес маршрутизатора с прежнего на 192.168.1.1, не преобразовывая IP-адреса в имена хостов)
Пример 4: route -n get 8.8.8.8
(получаем маршрут из таблицы маршрутизации для адреса 8.8.8.8, не преобразовывая IP-адреса в имена хостов)
ifconfig - просмотр и настройка сетевых интерфейсов. (-a = показать все интерфейсы; up = включить интерфейс; down - отключить интерфейс)
Пример 1: ifconfig en0
Пример 2: sudo ifconfig en0 down
ssh - безопасное подключение к удаленному серверу. (-p = указать порт; -i = использовать конкретный приватный ключ; -C = сжатие)
Пример 1: ssh -p 2235 -i ~/id_rsa kmmax@95.31.10.90
Пример 2: ssh -C root@95.31.10.90
scp - безопасное копирование файлов между хостами через SSH. (-P = указать порт; -i = использовать конкретный приватный ключ;
-C = сжатие; -l = ограничить скорость передачи до указанного значения в Кбит/с; -r = рекурсивно)
Пример 1: scp -P 2235 -i ~/id_rsa -r -C ~/Documents/local_directory kmmax@95.31.10.90:~/Documents
(Копируем локальную директорию со всем содержимым ~/Documents/local_directory на удаленный сервер 95.31.10.90 по порту 2235
в директорию ~/Documents пользователя kmmax, используя сжатие и приватный ключ из файла ~/id_rsa)
Пример 2: scp -P 2235 -i ~/id_rsa -r -C kmmax@95.31.10.90:~/Documents/remote_directory ~/Documents
(Копируем удаленную директорию со всем содержимым ~/Documents/remote_directory с сервера 95.31.10.90 по порту 2235
в локальную директорию ~/Documents, используя сжатие и приватный ключ из файла ~/id_rsa)
Пример 3: scp -C -l 5000 kmmax@95.31.10.90:~/Documents/remote_file ~/Documents
(Копируем удаленный файл ~/Documents/remote_file с сервера 95.31.10.90 на локальную директорию ~/Documents,
используя сжатие и ограничение скорости до 5000 Кбит/с)
sftp - интерактивный клиент для управления файлами через SSH. (-P = указать порт; -i = использовать конкретный приватный ключ;
-l = ограничить скорость передачи до указанного значения в Кбит/с)
Пример подключения к сессии: sftp -P 2235 -i ~/id_rsa kmmax@95.31.10.90
Внутри сессии работают базовые команды для взаимодействия с файловой системой (ls, cd, rm, cat, pwd, df)
Если писать их обычным образом, они будут выполняться для удаленного сервера, к которому вы подключились
Если поставить "!" перед командой, они будут выполняться для локального компьютера
Также есть 3 специальные команды для локального управления: lls, lcd, lpwd. Они работают быстрее, чем аналоги !ls, !cd, !pwd
(Примечание: во время сессии не рекомендуется использовать ~ внутри пути. Клиент sftp имеет трудности с интерпретацией этого
символа как путь к домашнему каталогу. Для надежности лучше использовать не ~, а абсолютный путь в качестве аргумента)
Особые команды sftp:
get = скачать с удаленного сервера на локальный компьютер (-r = рекурсивно; -p = сохранить текущие права доступа)
Пример: get -r /home/kmmax/Documents/remote_directory /Users/k.mmax/Documents
(Копируем удаленную директорию /home/kmmax/Documents/remote_directory со всем содержимым в локальную директорию
/Users/k.mmax/Documents)
put = загрузить с локального компьютера на удаленный сервер (-r = рекурсивно; -p = сохранить текущие права доступа)
Пример: put /Users/k.mmax/Documents/local_file /home/kmmax/Projects
(Копируем локальный файл /Users/k.mmax/Documents/local_file на удаленный сервер, в директорию /home/kmmax/Projects)
State для ss и netstat:
LISTEN Сервер ожидает входящих подключений
ESTABLISHED Соединение установлено, идет обмен данными
CLOSE_WAIT Удаленная сторона закрыла соединение, но твое приложение еще не закрыло свой сокет
TIME_WAIT Соединение закрыто, но система ждет, пока все пакеты дойдут
CLOSED Соединение полностью закрыто
Local address - локальный IP-адрес и порт, используемые данным соединением
Peer address или Foreign address - адрес и порт с кем компьютер говорит/ждет
Destination в таблице маршрутизации - это адрес, куда нужно отправить пакет
Gateway в таблице маршрутизации - это IP-адрес следующего маршрутизатора, через который нужно отправить пакет, чтобы он достиг Destination
Таблица CIDR:
/8 = 255.0.0.0
/16 = 255.255.0.0
/24 = 255.255.255.0
/32 = 255.255.255.255