Как использовать команду ip в linux
Содержание:
Параметры
Параметры зависят от объекта и указанной команды. Рассмотрим самые основные:
- dev имя_устройства — сетевое устройство;
- up — включить;
- down — выключить;
- lladdr — MAC — адрес;
- initcwnd — размер окна перегрузки TCP при инициализации;
- window — размер окна TCP;
- cwnd — размер окна перегрузки TCP;
- type — тип;
- via — подключиться к роутеру;
- default — маршрут по умолчанию;
- blackhole — маршрут «черная дыра» — отбрасывать пакеты и не посылать ICMP сообщения о недоступности;
- prohibit — маршрут «запрета» — отбрасывать пакеты и возвращать ICMP сообщения о запрете доступа;
- unreachable — маршрут «недостижимый» — отбрасывать пакеты и посылать ICMP пакеты о недостижимости узла.
Сетевые уровни
Сетевое взаимодействие часто представляют в виде горизонтальных соединений между хостами, однако реализация такого взаимодействия распределяется по вертикали по всему компьютеру или сети.
Существует множество встроенных друг в друга технологий и протоколов, которые упрощают сетевое взаимодействие. Каждый последующий, более высокий уровень упрощает использование необработанных данных приложениями и пользователями.
Это также позволяет использовать более низкие уровни для обработки трафика, не тратя время и силы на разработку новых протоколов и приложений.
Когда машина отправляет данные, они попадают на высший сетевой уровень и фильтруются каждым последующим уровнем. На самом низком уровне происходит фактическая передача на другую машину, после чего данные фильтруются уровнями в обратном порядке.
Каждый уровень может добавить оболочку вокруг полученных данных, что поможет следующим уровням понять, что делать с данными при их передаче.
Модель OSI
OSI (Open Systems Interconnect) – это базовая модель взаимодействия открытых систем, которая состоит из 7 уровней:
- 7 — Прикладной: уровень, с которым чаще всего взаимодействуют пользователи и пользовательские приложения. Он отвечает за передачу служебных данных, предоставляет приложениям сведения об ошибках и формирует запросы к следующему уровню.
- 6 – Представительский уровень (или уровень представления) отвечает за организацию данных при пересылке и преобразование данных в формат приложений.
- 5 – Сеансовый уровень управляет соединением. Он создаёт, поддерживает и сбрасывает соединения между нодами.
- 4 – Транспортный уровень отвечает за обработку и соединение между другими уровнями модели, а также за передачу данных от отправителя к получателю.
- 3 – Сетевой уровень обеспечивает маршрутизацию данных между нодами сети, транслирует логические адреса и имена в физические. Также этот уровень определяет путь передачи данных
- 2 — Канальный уровень отвечает за установление и поддержку надёжных соединений между нодами или устройствами сети.
- 1 – Физический уровень – нижний уровень модели; отвечает за обработку физических устройств, которые используются для установления соединения. Этот уровень включает в себя простое программное обеспечение, которое управляет физическими соединениями, а также аппаратное обеспечение (например, Ethernet).
Модель TCP/IP
Модель TCP/IP (набор протоколов Internet) – ещё одна популярная модель, которая состоит из 4 уровней (они совпадают с некоторыми уровнями OSI):
- Прикладной уровень отвечает за обмен данными между приложениями. Здесь работает большинство сетевых приложений. Конечный пользователь будет видеть удалённое приложение как локальное.
- Транспортный уровень поддерживает взаимодействие между процессами. Этот уровень использует порты для обращения к различным сервисам. Он может создавать небезопасные и безопасные соединения в зависимости от типа используемого протокола.
- Сетевой уровень обеспечивает передачу данных между нодами сети. IP-адреса используются как способ удаленного доступа к системам.
- Канальный уровень описывает среду, принципы и характеристики передачи данных. Он устанавливает соединения между соседними нодами для отправки данных.
FAQ по сетям
Как зайти на мой компьютер извне (через интернет)?
Для начала надо узнать, какой IP-адрес даёт провайдер — серый или белый (не путать со статическим/динамическим). Если серый, то ничего не получится. Если белый, то возможны два варианта:
- Роутера нет или он работает в режиме бриджа (моста). В этом случае белый IP-адрес присваивается самому компьютеру. Вводим адрес — попадаем на комп, всё просто.
- Белый адрес присваивается роутеру. Соответственно, по этому адресу мы попадаем на роутер, а не на компьютер. Чтобы попасть на компьютер, на роутере нужно пробросить порты (см. ниже).
Как узнать, какие программы слушают порты на моём компьютере?
Чтобы посмотреть список открытых портов и названия слушающих их программ, используйте команду:
sudo netstat -nlpA inet,inet6
Для вывода информации о конкретном порте можно использовать . Например, для 80 порта:
sudo netstat -nlpA inet,inet6 | grep :80
Из вывода не всегда понятно, о какой программе идёт речь (например, 2671/python), подробнее о процессе расскажет :
ps aux | grep 2671
Как присвоить два IP-адреса одной сетевой карте?
Например, интерфейсу eth0 нужно добавить адрес 192.168.1.1.
Кратковременно, до перезапуска сети:
sudo ip addr add 192.168.1.1/24 dev eth0
Навсегда — добавить в следующее:
#исправить строку auto auto eth0 eth0:1 # добавить алиас iface eth0:1 inet static address 192.168.1.1 netmask 255.255.255.0
Как пробросить порт?
Например, нужно пробросить порт 8081. Адрес, на который обращается клиент, назовём внешний_ip, а адрес, на который он должен попасть — внутренний_ip.
iptables -t nat -A PREROUTING -p tcp -d внешний_ір --dport 8081 -j DNAT --to-destination внутренний_ір:8081 iptables -t nat -A POSTROUTING -p tcp --dst внутренний_ір --dport 8081 -j SNAT --to-source внешний_ір
И обязательно нужно что-то вроде
iptables -t filter -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT