Заставить определенные приложения использовать разные интернет-соединения с forcebindip [windows]

Видимость для разработчиков

В приведенной выше таблице все свойства, за исключением свойств самонастраивающийся (PnP), видимы для приложений пользовательского режима и драйверов режима ядра через общий заголовок (Нетиоапи. h). Свойства PnP отображаются в заголовке Девпкэй. h и используются как в пользовательском режиме, так и в драйверах режима ядра. Например, см. документацию по девпкэй .

API вспомогательного приложения IP также доступен для настольных приложений в пользовательском режиме и драйверов режима ядра.

Поверхность API UWP предоставляет только свойство ифгуид напрямую. Однако разработчики приложений UWP могут импортировать функцию GetIfTable2 с помощью P/Invoke, если они необходимы для доступа к другим свойствам сетевого интерфейса.

[править] Примечания

Сетевой уровень

Основные понятия
Сетевой интерфейс | IP | IP-адрес | Маска подсети | Широковещательный адрес | Маршрут | IPv6 Маршрутизация | Форвардинг | Таблица маршрутизации | Шлюз по умолчанию Маршрутизация в Linux | Маршрутизация в FreeBSD | Маршрутизация в Cisco
Динамическая маршрутизация
Протоколы: RIP | OSPF | EIGRP | BGP | IS-IS
Демоны: Quagga | GNU Zebra | XORP | bird | OpenBGPD | OpenOSPFD | MRT (заброшен)
Устройства: Cisco Router | ProCurve Router | Vyatta
Отказоустойчивость
Протоколы: CARP| HSRP | VRRP | XRRP | GLBP
Реализация: CARP в OpenBSD | CARP в FreeBSD | UCARP | HSRP в Cisco | VRRP в Cisco | VRRP в ProCurve | XRRP в ProCurve

Обзор

Сетевой интерфейс — это точка, в которой соединяются две части сетевого оборудования или уровней протоколов. Как правило, он представлен физической сетевой картой (NIC) для подключения между компьютером и частной или общедоступной сетью. Однако он также может принимать форму программного компонента, такого как интерфейс замыкания на себя ( для IPv4 или IPv6).

Сетевые интерфейсы определяются с помощью IETF в RFC 2863 и не предназначены для определения с помощью Windows. Подробные вопросы о значении идентификаторов сетевых интерфейсов, таких как ifIndex, см. в их определениях IETF. в оставшейся части этого раздела обсуждаются сведения о реализации, связанные с Windows.

Настройка mtu на интерфейсе

Параметр mtu нужно менять, если вы пользуетесь индивидуальной защитой от DDoS. В стандарте Ethernet TCP-пакеты разбиты на кадры объемом 1500 байт, но при передаче через GRE-тоннель маршрутизаторы дописывают к кадрам свои 24 байта. Принимающая система оказывается не готова к кадру размером 1524 байт, поэтому мы изменим параметр mtu на интерфейсе, уменьшив его до 1476 байт, чтобы принимающая система спокойно восприняла итоговый кадр в 1500 байт.

Дописываем mtu в конфигурационный файл /etc/netpal/50-cloud-init.yaml сразу после имени интерфейса, например: 

ens3:
  mtu: 1476
  addresses:
  - 185.185.68.210/22

Важно соблюдать количество пробелов как в остальном файле. После чего перезагружаем сетевую службу командой netplan apply

После чего перезагружаем сетевую службу командой netplan apply.

Редактируем файл /etc/network/interfaces, добавляя параметр вслед за описанием интерфейса:

auto ens3
iface ens3 inet static
mtu 1476
address 123.123.123.123

Перезагружаем сеть командой systemctl restart networking.

Вносим в файл /etc/sysconfig/network строку:

MTU=1476

И перезагружаем сетевую службу: systemctl restart network.

Скачать ForceBindIP

ForceBindIP позволяет привязать любое приложение Windows к определенному сетевому интерфейсу, поэтому при запуске этого приложения оно будет использовать полосу пропускания, выделенную для этого конкретного сетевого подключения. Это означает, что вы, наконец, можете загружать огромные файлы, играя в онлайн-игры, не испытывая больших задержек.

ForceBindIP рекламируется как для NT / 2000 / XP / 2003, но отлично работает на Windows 7 для меня. Если вы используете 32-разрядную версию, приложение будет установлено в % WinDir% \ system32 . 64-разрядные операционные системы покажут установку в % WinDir% \ SysWOW64.

Чтобы использовать ForceBindIP, вам понадобится ваш локальный IP-адрес или GUID вашего сетевого интерфейса. Вот как вы можете найти свой локальный IP.

Перейдите в Центр управления сетями и общим доступом через панель управления. Сначала нажмите на красную область, а затем, когда это всплывет, синий. Вы увидите следующее.

Это ваш локальный IP. Если по какой-то причине вы хотите использовать GUID интерфейса, процесс немного сложнее. Я бы порекомендовал использовать статический локальный IP-адрес, поскольку это значительно облегчает процесс.

Теперь допустим, что я должен был подключиться к другой сети через Ethernet (что будет иметь приоритет перед этим беспроводным соединением). Однако я хочу запустить Chrome, используя мое беспроводное интернет-соединение. Не отключайтесь от беспроводной сети. Оставайтесь на связи, и тогда вы выполните следующую команду в командной строке:

После нажатия Enter, требуемый процесс будет запущен, и он будет работать через сетевой интерфейс, связанный с этим IP

Очень важно заключить все пути с пробелами в них (то есть каждое приложение в папках Program Files) в кавычки. Если вам необходимо доказать эффективность этого, вы можете запустить программу, подобную AdapterWatch, для просмотра входящих / исходящих сигналов нескольких сетевых интерфейсов

ForceBindIP можно использовать несколькими способами, чтобы создавать умные и автоматизированные способы постоянного запуска определенных приложений через определенный сетевой интерфейс. Например, вы можете использовать такую ​​программу, как Панель управления запуском, чтобы редактировать команды и параметры для скрытых элементов запуска. Таким образом, вы можете принудительно запускать программы через сетевой интерфейс при запуске Windows.

Вы также можете создавать ярлыки на рабочем столе, используя ForceBindIP.

Я даже дошел до того, что настроил пункты контекстного меню, чтобы можно было легко запускать любое приложение через определенный интерфейс, чему вы можете научиться здесь . Отдельное спасибо авторам StackExchange за помощь в этом!

ForceBindIP — это удивительное, единственное в своем роде приложение, которое спасло меня во многих отношениях и сделало мой онлайн-опыт намного быстрее и менее болезненным. После долгого поиска подобного решения мне удалось найти его на этой неделе, и это настоящий подарок. Если у вас возникнут проблемы с запуском ForceBindIP, напишите мне, и я помогу.

Несколько IP-адресов

IPv4

Чтобы назначить дополнительные IPv4-адреса на тот же самый интерфейс, необходимо создать виртуальный интерфейс в виде имя_интерфейса:номер, например .

В остальном интерфейс настраивается аналогично физическому.

CentOS

$ cat /etc/sysconfig/network-scripts/ifcfg-eth1:0

DEVICE=eth1:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0

Debian/Ubuntu

$ cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto eth0
iface ens6 inet static
address 192.168.0.1
netmask 255.255.255.0

auto eth0:0
iface ens6:0 inet static
address 192.168.1.1
netmask 255.255.255.0

Ubuntu 16.04 LTS

Для данной ОС не требуется создавать виртуальный интерфейс, достаточно добавить второй IP-адрес на уже существующий, например:

$ cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto ens6
iface ens6 inet static
address 192.168.0.1
netmask 255.255.255.0

iface ens6 inet static
address 192.168.1.1

Ubuntu 18.04 LTS с netplan

В интерфейсе описываются необходимые адреса, роутинг происходит через директиву routes.

$cat /etc/netplan/50-cloud-init.yaml

network:
version: 2
ethernets:
ens3:
addresses:
- 185.185.68.210/22
- 141.8.198.107/22
gateway4: 185.185.68.1
nameservers:
	addresses:
	- 141.8.194.254
	- 141.8.197.254
routes:
  - to: 185.185.68.210/22
	via: 185.185.68.1
  - to: 141.8.198.107/22
	via: 141.8.198.1

IPv6

Несколько IPv6-адресов можно назначать на один интерфейс без создания виртуального. При этом gateway указывается только один раз. Например:

CentOS

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=yes
IPV6ADDR=2a0a:2b40::4:1701/64
IPV6ADDR_SECONDARIES="2a0a:2b40::4:1702/64 2a0a:2b40::4:1703/64" 

Debian/Ubuntu

$ cat /etc/network/interfaces

iface eth0 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway 2a0a:2b40::1

iface eth0 inet6 static
address 2a0a:2b40::4:16d2
netmask 64

Ubuntu 16.04 LTS

$ cat /etc/network/interfaces

iface ens3 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway 2a0a:2b40::1

iface ens3 inet6 static
address 2a0a:2b40::4:16d2
netmask 64

Теория

Использовать без нам нужно узнать, как они общаются ( должен как-то передавать IP-адрес в dll).

Я использовал IDA бесплатно и обнаружил, что создает переменную среды с именем который содержит IP-адрес и читает IP-адрес из этой переменной при внедрении и выполнении в целевом процессе.

Чтобы обнаружить запуск целевого приложения, мы можем добавить ключ в параметрах выполнения файла изображения в реестре для этого исполняемого файла:

«Отладчик» в нашем случае будет пакетным скриптом, который установит переменную и запускаем инжекторный dll-инжектор. Инжектор затем запустит процесс, передаст аргументы командной строки и введет .

Установка Secure IP Bind HideMyAss

  1. Загрузите последнюю версию установщика Windows: https://www.hidemyass.com/downloads
  2. Распакуйте его с помощью 7-zip. Игнорируйте предупреждения о файлах с одинаковыми именами, их можно безопасно перезаписать.
  3. Перейти к папка в распакованном установщике
  4. Скопируйте эти три файла в папку на вашем диске ()

    • ForceInterfaceCOM.dll
    • ForceInterfaceLSP.dll
    • InstallLSP.exe
  5. Положить и в эту папку

Install.cmd

Uninstall.cmd

  1. Бежать как администратор. Чтобы убедиться, что установка прошла успешно, вы можете использовать автозапуск:

  1. Чтобы управлять Secure IP Bind, вы должны вызвать методы интерфейса COM. Это можно сделать в PowerShell. Если у вас ОС x64, обязательно запустите или же , потому что COM-компонент 32-битный.

Во-первых, вам нужно создать новый объект Secure IP Bind:

И тогда вы можете назвать это методами:

Получение Сетевых Интерфейсов

В этом разделе мы рассмотрим другие доступные API для получения доступных интерфейсов. В предыдущем разделе мы видели только один из этих подходов-статический метод getByName () .

Стоит отметить, что класс NetworkInterface не имеет открытых конструкторов, поэтому мы, конечно, не можем создать новый экземпляр. Вместо этого мы собираемся использовать доступные API для получения одного из них.

API, который мы рассматривали до сих пор, используется для поиска сетевого интерфейса по указанному имени:

@Test
public void givenName_whenReturnsNetworkInterface_thenCorrect() {
    NetworkInterface nif = NetworkInterface.getByName("lo");

    assertNotNull(nif);
}

Он возвращает null , если для имени нет:

@Test
public void givenInExistentName_whenReturnsNull_thenCorrect() {
    NetworkInterface nif = NetworkInterface.getByName("inexistent_name");

    assertNull(nif);
}

Второй API-это getByInetAddress() , он также требует, чтобы мы предоставили известный параметр, на этот раз мы можем предоставить IP-адрес:

@Test
public void givenIP_whenReturnsNetworkInterface_thenCorrect() {
    byte[] ip = new byte[] { 127, 0, 0, 1 };

    NetworkInterface nif = NetworkInterface.getByInetAddress(
      InetAddress.getByAddress(ip));

    assertNotNull(nif);
}

Или имя хоста:

@Test
public void givenHostName_whenReturnsNetworkInterface_thenCorrect()  {
    NetworkInterface nif = NetworkInterface.getByInetAddress(
      InetAddress.getByName("localhost"));

    assertNotNull(nif);
}

Или если вы конкретны в отношении localhost:

@Test
public void givenLocalHost_whenReturnsNetworkInterface_thenCorrect() {
    NetworkInterface nif = NetworkInterface.getByInetAddress(
      InetAddress.getLocalHost());

    assertNotNull(nif);
}

Другой альтернативой также является явное использование интерфейса обратной связи:

@Test
public void givenLoopBack_whenReturnsNetworkInterface_thenCorrect() {
    NetworkInterface nif = NetworkInterface.getByInetAddress(
      InetAddress.getLoopbackAddress());

    assertNotNull(nif);
}

Третий подход, который был доступен только с Java 7, заключается в том, чтобы получить сетевой интерфейс по его индексу:

NetworkInterface nif = NetworkInterface.getByIndex(int index);

Последний подход предполагает использование API getNetworkInterfaces . Он возвращает Перечисление всех доступных сетевых интерфейсов в системе. Это на нас, чтобы получить возвращенные объекты в цикле, стандартная идиома использует Список :

Enumeration nets = NetworkInterface.getNetworkInterfaces();

for (NetworkInterface nif: Collections.list(nets)) {
    //do something with the network interface
}

Шаг 1. Настройка физической и виртуальной сети

В этой процедуре вы создадите два внешних коммутатора Hyper-V, подключите виртуальную машину к коммутаторам, а затем настроите подключения виртуальных машин к коммутаторам.

Процедура

  1. На узле Hyper-V откройте диспетчер Hyper-V и в разделе действия щелкните Диспетчер виртуальных коммутаторов.

  2. Убедитесь, что в диспетчере виртуальных коммутаторов выбран параметр Внешние , а затем нажмите кнопку создать виртуальный коммутатор.

  3. В свойствах виртуального коммутатора введите имя виртуального коммутатора и добавьте Примечания при необходимости.

  4. В поле тип подключенияво внешней сетивыберите физический сетевой адаптер, к которому нужно подключить виртуальный коммутатор.

  5. Настройте дополнительные свойства коммутатора для развертывания и нажмите кнопку ОК.

  6. Создайте второй внешний виртуальный коммутатор, повторив предыдущие шаги. Подключение второй внешний коммутатор для другого сетевого адаптера.

  7. в диспетчере Hyper-V в разделе виртуальные машиныщелкните правой кнопкой мыши виртуальную машину, которую необходимо настроить, и выберите пункт Параметры.

    откроется диалоговое окно Параметры вм.

  8. Убедитесь, что виртуальная машина не запущена. Если оно запущено, выполните завершение работы, прежде чем настраивать виртуальную машину.

  9. В списке оборудованиещелкните сетевой адаптер.

  10. В окне свойства сетевого адаптера выберите первый виртуальный коммутатор, созданный на предыдущих шагах, и нажмите кнопку Применить.

  11. В поле оборудованиещелкните, чтобы развернуть значок плюса (+) рядом с пунктом сетевой адаптер.

  12. Щелкните Дополнительные функции , чтобы включить объединение сетевых карт с помощью графического пользовательского интерфейса.

    Совет

    также можно включить объединение сетевых карт с помощью команды Windows PowerShell:

    a. Выберите динамический для Mac-адреса.

    b. Щелкните, чтобы выбрать защищенную сеть.

    c. Выберите этот параметр, чтобы включить этот сетевой адаптер в состав команды в гостевой операционной системе.

    d. Нажмите кнопку ОК.

  13. чтобы добавить второй сетевой адаптер, в диспетчере Hyper-V в области виртуальные машиныщелкните ту же виртуальную машину правой кнопкой мыши и выберите пункт Параметры.

    откроется диалоговое окно Параметры вм.

  14. В окне Добавить оборудованиевыберите пункт сетевой адаптери нажмите кнопку добавить.

  15. В окне свойства сетевого адаптера выберите второй виртуальный коммутатор, созданный на предыдущих шагах, и нажмите кнопку Применить.

  16. В поле оборудованиещелкните, чтобы развернуть значок плюса (+) рядом с пунктом сетевой адаптер.

  17. Щелкните Дополнительные компоненты, прокрутите вниз до пункта Объединение сетевых карти выберите включить этот сетевой адаптер в качестве части команды в гостевой операционной системе.

  18. Нажмите кнопку ОК.

Поздравляю! Вы настроили физическую и виртуальную сеть. Теперь можно приступить к созданию новой группы сетевых адаптеров.

Требования к конфигурации сети

Перед созданием новой группы сетевых адаптеров необходимо развернуть узел Hyper-V с двумя сетевыми адаптерами, которые подключаются к разным физическим коммутаторам. Кроме того, необходимо настроить сетевые адаптеры с IP-адресами из одного и того же диапазона IP-адресов.

Для создания группы сетевых карт на виртуальной машине требуются физические коммутаторы, виртуальный коммутатор Hyper-V, локальная сеть (LAN) и объединение сетевых карт.

  • Компьютер с Hyper-V должен иметь не менее двух сетевых адаптеров.

  • При подключении сетевых адаптеров к нескольким физическим коммутаторам физические коммутаторы должны находиться в одной подсети уровня 2.

  • для создания двух внешних коммутаторов hyper-v, каждый из которых подключен к другому физическому сетевому адаптеру, необходимо использовать диспетчер Hyper-v или Windows PowerShell.

  • Виртуальная машина должна подключаться к обоим внешним виртуальным коммутаторам, которые вы создали.

  • объединение сетевых карт в Windows Server 2016 поддерживает команды с двумя членами виртуальных машин. Вы можете создавать крупные команды, но не поддерживаются.

  • Если вы настраиваете группу сетевых адаптеров на виртуальной машине, необходимо выбрать режим объединениякоммутаторов в независимомрежиме и режим балансировки нагрузки для хэша адреса.

Практика

  1. Создать папку где-нибудь ( например) и поместите в него эти три файла:

    • injectory.x86.exe

сценарий:

  1. Создайте раздел реестра (например, ) для целевого исполняемого файла в
  2. Добавьте строковое значение к этому ключу:

    • Имя:
    • Значение:
  3. Грант Полные права на этот ключ (скрипту придется изменять его при каждом запуске). Должно получиться так:

  4. Установите требуемый IP-адрес в

  5. Повторите шаги 3 и 4 для каждого исполняемого файла, который вы хотите привязать (, , , и т.д.).

Теперь каждый раз, когда вы запускаете исполняемый файл с соответствующей записью в реестре, Вместо этого запустится скрипт, который привяжет эту программу к желаемому IP-адресу.

ifconfig

Команда ifconfig позволяет получать диагностическую информацию об интерфейсах системы и выполнять их настройку.

Формат вызова команды:

ifconfig interface options

Для получения информации, программа ifconfig может вызываться простым пользователем. Файл ifconfig находится в каталоге /sbin, чаще всего при вызове нужно указывать абсолютное путевое имя.

Без параметров программа выводит на экран информацию обо всех активных (находящих в состоянии ) интерфейсах. Если указано имя интерфейса и отсутствуют опции, выводится информация только о нем.

Просмотр информации об интерфейсе eth0

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:01:02:B4:61:10  
inet addr:10.0.0.188  Bcast:10.255.255.255  Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1347443 errors:0 dropped:0 overruns:0 frame:0
TX packets:865328 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100 
RX bytes:830641609 (792.1 Mb)  TX bytes:72315353 (68.9 Mb)
Interrupt:10 Base address:0xcc00

Формат вывода информации о интерфейсе программой ifconfig:Характеристики канального уровняКанальный уровень Link encap. Аппаратный MAC-адрес устройства HWaddr.Характеристики сетевого уровняIP-адрес интерфейса inet addr; широковещательный адрес интерфейса Bcast; маска подсети интерфейса Mask.Флаги, метрика и MTUСписок установленных флагов интерфейса: включён UP; принимает широковещательные пакеты BROADCAST; принимает групповые пакеты MULTICAST. Среди списка установленных флагов может присутствовать слово PROMISC, означающее, что интерфейс работает в неразборчивом режиме. Установленный размер максимального блока, передаваемого через интерфейс MTU и метрика интерфейса Metric.Информация о полученных пакетах RXЧисло пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться.Информация об отправленных пакетахЧисло пакетов packets, ошибок errors, отброшенных пакетов dropped, переполнений overruns, потерь несущей carrier, коллизий collisions ; объем буфера передачи txqueuelen. Такое назначение полей соответствует только сетям Ethernet. В других сетях, смысл может отличаться.Объем переданных данныхКоличество байтов полученных RX bytes и отправленных TX bytes через интерфейс/Аппаратные параметрыНомер линии IRQ Interrupt и адрес памяти Base address.

Назначение IP-адреса 10.0.0.1 первой Ethernet-карте выполняется командой:

$ ifconfig eth0 10.0.0.1

[править] Создание сетевого интерфейса

Интерфейс создается ядром автоматически при обнаружении устройства. Для того чтобы устройство было доступно, необходимо включить его драйверную поддержку в состав ядра. Это может быть сделано в момент сборки ядра или при работе системы с использованием механизма загружаемых модулей.

Если устройств, обеспечивающих одинаковый тип интерфейса, несколько, их автоматическое определение не производится.

При использовании нескольких устройств одного типа нужно произвести их ручную настройку, то есть явным образом назначить интерфейс каждому из них. Это необходимо, поскольку при автоматическом определении устройств порядок привязки к интерфейсам непредсказуем, что недопустимо.

Не путайте интерфейсы и
устройства системы. Интерфейсам не соответствуют
никакие специальные файлы в каталоге /dev

Вновь созданный интерфейс является ненастроенным: он выключен и к нему не
привязан никакой IP-адрес. Для того чтобы ввести интерфейс в работу, нужно
провести его настройку и включить (поднять) его при помощи команды
ifconfig.

При настройке интерфейса обычно настраиваются следующие параметры:

  • IP-адрес должен быть указан обязательно, поскольку без него использование интерфейса неосуществимо;
  • Сетевая маска должна указываться в том случае, если она отличается от той, которая соответствует классу IP-адреса;
  • Широковещательный адрес указывается в том случае, если он отличается от широковещательного адреса, вычисляемого на основе значений IP-адреса и сетевой маски.

Эти параметры задаются одной командой, которая при этом, как правило, сразу и включает интерфейс.

# ifconfig eth0 192.168.1.1 up
# ifconfig eth1 10.0.0.1 netmask 255.255.255.0 up

IPv6

Адрес можно добавить на тот же интерфейс, что и IPv4, новый создавать не нужно.

На нашей площадке используется универсальный шлюз .

CentOS

Для работы с IPv6 необходимо добавить следующие директивы в конфигурационный файл :

NETWORKING_IPV6=yes
IPV6_DEFAULTDEV=eth0
IPV6_DEFAULTGW=fe80::1
  • NETWORKING_IPV6 — включаем поддержку IPV6.
  • IPV6_DEFAULTDEV — интерфейс по умолчанию.
  • IPV6_DEFAULTGW — gateway по умолчанию.

IP-адрес назначается в конфигурационном файле :

IPV6INIT=yes
IPV6ADDR=2a0a:2b40::4:1701/64

Debian/Ubuntu

IP-адрес добавляется на интерфейс в файле :

iface eth0 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway fe80::1

Ubuntu 16.04 LTS

От других систем семейства отличается имя интерфейса, вместо eth0 – ens3.

iface ens3 inet6 static
address 2a0a:2b40::4:16d1
netmask 64
gateway fe80::1

Ubuntu 18.04 LTS

В файл нужно добавить:

addresses:
            - 2a0a:2b40:fa:a31::/64
gateway6: fe80::1

И применить изменения командой netplan apply.

[править] Сетевой интерфейс в Linux

Сетевое взаимодействие Linux-компьютера происходит через сетевые интерфейсы. Любые данные, которые компьютер отправляет в сеть или получает из сети проходят через сетевой интерфейс.

Интерфейс определён реализацией модели TCP/IP для того чтобы скрыть различия в сетевом обеспечении и свести сетевое взаимодействие к обмену данными с абстрактной сущностью.

Для каждого устройства, поддерживаемого ядром, существует сетевой
интерфейс. Существует соглашение о наименовании интерфейсов, в соответствии
с которым имя интерфейса состоит из префикса, характеризующего его тип, и
числа, соответствующего номеру интерфейса данного типа в системе. Так,
например, ppp0 соответствует первому интерфейсу PPP, а eth1
соответствует интерфейсу второго сетевого адаптера Ethernet

Обратите внимание на то, что нумерация интерфейсов начинается с 0.

Наименования сетевых интерфейсов в Linux

lo
Интерфейс петли обратной связи.
eth
Сетевой интерфейс к карте Ethernet или картам WaveLan (Radio Ethernet).
tr
Сетевой интерфейс к карте Token Ring.
ppp
Сетевой интерфейс к каналу PPP (Point-to-Point Protocol).
sl
Сетевой интерфейс к каналу SLIP (Serial Line IP).
plip
Сетевой интерфейс к каналу PLIP (Parallel Line IP). Используется для организации сетевого взаимодействия с использованием параллельного порта.
ax
Сетевой интерфейс к устройствам любительского радио AX.25.
fddi
Сетевой интерфейс к карте FDDI
arc0e, arc0s
Сетевой интерфейс к карте ArcNet. Используется инкапсуляция пакетов в формате Ethernet или RFC 1051.
wlan
Сетевой интерфейс wi-fi адаптеров

Интерфейсы создаются автоматически для каждого обнаруженного сетевого устройства при загрузке ядра ОС.

Каждый интерфейс характеризуется определёнными параметрами, необходимыми для обеспечения его нормального функционирования, и в частности для сетевого обмена данными по протоколу IP.

Параметры интерфейса

IP-адрес
Адрес IP, соответствующий данному сетевому интерфейсу. Пакеты, отправленные по этому адресу, поступят на соответствующий интерфейс
Маска подсети
Битовая маска, необходимая для вычисления маршрута передачи IP-пакета
Широковещательный адрес
Адрес, используемый при широковещательной рассылке пакетов через интерфейс.
Метрика
Условная характеристика интерфейса соответствующая уровню затрат при передаче информации через него. Используется при маршрутизации пакетов, для выбора оптимального маршрута.
MTU
Maximum Transfer Unit. Максимальный размер блока данных обрабатываемого интерфейсом. Наибольшее значение MTU определяется типом интерфейса (например, для Ethernet MTU=1500), но может быть искусственно снижено.
MAC-адрес
Аппаратный адрес сетевого устройства, соответствующего интерфейсу (для которых это имеет смысл).

Кроме этих параметров интерфейс характеризуется ещё:

  • Флагами, которые определяют состояния устройства, например такие как: включен ли интерфейс (Up/Down), находится ли он в неразборчивом режиме (promiscuous/nonpromiscuous)
  • Аппаратными характеристиками, такими как адрес памяти, номер IRQ, DMA, порт ввода/вывода;
  • Статистической информацией, характеризующей различные аспекты работы интерфейса. Например, количество переданных/полученных байтов/пакетов, число переполнений, коллизий и др. с момента создания интерфейса.

Debian.
Долговременные настройки хранятся в файле /etc/network/interfaces.

Конфигурационные файлы и настройка IPv4

Debian/Ubuntu

Настройки сетевого интерфейса указываются в конфигурационном файле :

auto eth0
iface eth0 inet static
address 123.123.123.123
netmask 255.255.255.0
gateway 123.123.123.0
dns-nameservers 141.8.194.254 141.8.197.254

Ubuntu 16.04 LTS

Директивы сетевого интерфейса записываются в файл . В отличие от Debian и Ubuntu более ранних версий, интерфейсы именуются с префиксом , например — :

auto ens3
iface ens3 inet static
address 123.123.123.123
netmask 255.255.255.0
gateway 123.123.123.1
dns-nameservers 141.8.194.254 141.8.197.254

Ubuntu 18.04 LTS

В этой версии ОС сеть может задаваться не с помощью networking, а с помощью утилиты netplan.

Конфигурационный файл сетевого интерфейса расположен в каталоге:  /etc/netpal/50-cloud-init.yaml. Описание интерфейса выглядит следующим образом:

network:
version: 2
ethernets:
ens3:
addresses:
- 185.185.68.210/22
gateway4: 185.185.68.1
nameservers:
	addresses:
	- 141.8.194.254
	- 141.8.197.254

Для применения изменений необходимо выполнить команду netplan apply. Она проверяет конфигурационный файл на наличие ошибок, применяет изменения и автоматически перезагружает интерфейс.

Redhat/Fedora/CentOS

В Redhat, Fedora или CentOS директория, отвечающая за присвоение постоянных IP-адресов — это . В данной директории необходимо создать файл, соответствующий вашему новому виртуальному интерфейсу. Например, на наших боксах подобный файл будет называться .

— каталог, содержащий конфигурационные файлы интерфейсов и скрипты, выполняющие их инициализацию. — скрипт, который выполняет настройку и активацию интерфейса. — скрипт, который выполняет деактивацию интерфейса. — конфигурационные файлы, описывающие интерфейсы системы. — скрипт, выполняющий настройку сетевых интерфейсов и маршрутизации при загрузке. — конфигурационный файл, содержащий имя хоста, IP-адрес основного шлюза и IP-адреса основного и вспомогательного DNS-серверов:

TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
DNS1=141.8.194.254
DNS2=141.8.197.254
NETMASK=255.255.255.0
BOOTPROTO=static
IPADDR=123.123.123.123
GATEWAY=123.123.123.1

Связанные темы

  • Объединение сетевыхкарт. в этой статье приводится обзор объединения сетевых адаптеров (NIC) в Windows Server 2016. Объединение сетевых карт позволяет объединять один и 32 физических сетевых адаптеров Ethernet в один или несколько программных виртуальных сетевых адаптеров. Эти виртуальные сетевые адаптеры обеспечивают высокую производительность и отказоустойчивость в случае сбоя сетевого адаптера.

  • Объединение сетевых карт. использование и управление MAC-адресами. при настройке группы сетевых карт с независимым режимом и при использовании хэша или динамического распределения нагрузки группа использует Mac-адрес основного члена группы сетевых адаптеров для исходящего трафика. Член группы основного сетевого адаптера — это сетевой адаптер, выбранный операционной системой из начального набора членов группы.

  • Параметры объединения сетевых карт. в этом разделе мы преддадим Обзор свойств группы сетевых адаптеров, таких как объединение и режим балансировки нагрузки. Кроме того, мы предоставляем подробные сведения о параметре адаптера ожидания и свойстве основного интерфейса группы. Если у вас есть по крайней мере два сетевых адаптера в группе сетевых адаптеров, не нужно назначать резервный адаптер для отказоустойчивости.

  • Устранение неполадок объединения сетевых адаптеров. в этом разделе обсуждаются способы устранения неполадок объединения сетевых карт, таких как оборудование, безопасность физического коммутатора и отключение или включение сетевых адаптеров с помощью Windows PowerShell.

В этом разделе вы создадите новую группу сетевых адаптеров на главном компьютере или на виртуальной машине Hyper-V, работающей Windows Server 2016.

Заключение

Я тестировал это на своем ноутбуке под управлением Windows 8.1 x64 и смог успешно привязать различные программы (AIMP 2, BersIRC, Opera 12.4) к адаптеру Ethernet или WiFi, используя эту технику. К сожалению является 32-битным, поэтому он не будет работать с 64-битными процессами.

  • Большое спасибо за подробное объяснение! К сожалению, я получаю какое-то исключение из injectory: github.com/blole/injectory/issues/4
  • @VictorMarchuk Я сделал больше тестов, и действительно, иногда возникают проблемы с вариант. Не знаю почему.
  • Я не смог запустить его даже без с любым приложением
  • @VictorMarchuk У вас есть пример? Я только что протестировал его с Opera 12.14 и командной строкой — он работал нормально.
  • @VictorMarchuk Похоже, что действительно может передавать параметры, см. мой обновленный ответ.

Я нашел HideMyAss! VPN-клиент имеет функцию Secure IP Bind, которая позволяет привязать приложения к интерфейсу VPN:

Я посмотрел на него, и он основан на пользовательской dll Layered Service Provider (LSP) и интерфейсе COM для управления им. И его можно (ab) использовать без установки VPN-клиента HideMyAss.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: