Я использую несколько сетевых интерфейсов (LAN и Wireless), и я заметил, что есть способ изменить порядок предпочтительных интерфейсов. Как я могу использовать проводную сеть, чтобы работать, проверять электронную почту и т.д. (Безопасно), и использовать беспроводную VLAN для доступа к другим вещам (в противном случае блокируются портами, а иногда и веб-браузером)?
7 ответов
Хитрость заключается в корректировке таблиц маршрутизации (которая не зависит от порта назначения или исходного приложения, но зависит от хоста назначения). Это предполагает, что вы работаете в Linux или OS X (как показывают теги).
Скажем, ваш шлюз по умолчанию - 1.2.3.4, и у вас есть vpn, который может маршрутизировать трафик на 6.7.8.9. Если вы хотите, чтобы ваш почтовый трафик проходил через 6.7.8.9, просто сделайте
sudo route add mail.myserver.com 6.7.8.9
В некоторых версиях маршрута между адресом и следующим прыжком может потребоваться ключевое слово "gw". Если вы хотите создать весь сетевой маршрут для следующего перехода, просто добавьте маску сети в нотации CIDR для пункта назначения, например
sudo route add 192.168.0.0/24 6.7.8.9
Если вы хотите просмотреть существующую таблицу маршрутизации, используйте
netstat -nrl
or
ip route list
Если вы работаете в Windows, "сетевой маршрут" поможет вам в этом, но синтаксис совершенно другой.
Если вы просто хотите, чтобы два сетевых адаптера были активны одновременно, вы можете установить порядок обслуживания в Системных настройках / Сеть, выбрав механизм под списком сетевых устройств. Перетащите порядок, в котором вы хотите их.
Например, у меня всегда активны Ether и WiFi на моем MBP с установленным Ether выше Wi-Fi. Поскольку я использую Ether на работе, я настроил этот сетевой адаптер с настройками прокси-сервера и Wi-Fi без него. Когда я иду домой, нет необходимости настраивать какие-либо настройки. Вы также можете сделать это из терминала, используя /usr/bin/networksetup -ordernetworkservices
.
Но из-за того, что активное и приложение используют не по умолчанию, мне повезло с немного более легким вращением по совету @ Андора. Если я хочу, чтобы приложение не использовало Ether в моем случае, я устанавливаю настройки прокси для приложения на IP-адрес моего адаптера Wi-Fi. Он будет использовать этот интерфейс для выхода и таким образом обойти прокси-серверы компании и серверы мониторинга. Так что, если Ether имеет адрес 1.2.3.4 и идет до Wi-Fi (5.6.7.8) в сервисном заказе, у меня есть прокси приложения до 5.6.7.8.
Для Mac есть простое решение, которое я использую. На самом деле это реализация решения @ Andor. Установите прокси и настройте приложения для его использования:
Я установил SquidMan
В конфигурации добавьте следующую строку. Вам нужно указать ip, который вы будете использовать для своих личных приложений вместо
x.x.x.x
:tcp_outgoing_address x.x.x.x
Запустите SquidMan и настройте ваше приложение на использование его в качестве прокси.
Я потратил час, чтобы найти эту информацию на разных страницах, поэтому надеюсь, что это поможет другим сделать это быстрее.
Вам, вероятно, придется использовать низкоуровневые функции управления IO (ioctl). Особенно:
ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address
а также
ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address
Смотрите эту справочную страницу для более подробной информации.
Проблема в том, что у вас будет несколько шлюзов к вашему сетевому соединению, и это немного сложно для управления ...
У некоторых утилит unix и linux, связанных с сервером или сетью, обычно есть флаг под названием "interface", где вы можете указать, какой интерфейс вы хотите использовать, например, в tcpdump:
tcpdump -i eth0
Но, как я думаю, вы спрашиваете о маршрутизации стандартного настольного программного обеспечения, это становится немного сложнее ...
Во всяком случае, я могу рассказать вам об этом ... Мое обычное решение для решения этих проблем - использование прокси и наличие только одного шлюза. Практически любое программное обеспечение, которое использует Интернет в настоящее время, имеет опции для настройки прокси, так что вы можете сделать это любым из следующих способов:
1.- Настройка прокси в "незащищенной" (я имею в виду, где политики не применяются) части вашей сети и направление вашего программного обеспечения на этот прокси.
2. Установите SSH-сервер в другом "незащищенном" месте, скажем, у вас дома или на выделенном сервере в Интернете, и откройте соединение с помощью специальной функции SSH, которая создает прокси-сервер socks:
ssh -D 1234 user@host
Это создаст на вашем компьютере прокси-сервер socks на порту "1234", который будет подключаться к вашему "хосту", используя вашего "пользователя", и выходить в Интернет через соединение, которое имеет ваш "хост" ... Затем в локальном программном обеспечении вам нужно всего лишь открыть инструменты настройки прокси и указать localhost:1234.
Хорошие трюки, чтобы избежать корпоративных интернет-политик:P
:D
Я запускаю свои бизнес-приложения на виртуальной машине. Я использовал приведенные выше инструкции, чтобы установить WiFi в качестве предпочтительного подключения, а затем настроил виртуальную машину для использования порта Ethernet в качестве адаптера "Bridged".
Все, что работает внутри виртуальной машины, теперь жестко связано с портом Ethernet. Wi-Fi - мое предпочтительное соединение для всех других приложений (за пределами виртуальной машины), если у меня подключено соединение WiFi.
Я считаю, что существуют утилиты, которые можно использовать для принудительной привязки приложения к определенному порту Ethernet, но не исследовали его для MacOS.
Упомянутый ранее способ маршрутизации является несколько сложным для "непрофессионала", но также выглядит хорошим жизнеспособным подходом, особенно если вы постоянно получаете один и тот же IP-адрес в ваших соединениях.
Несмотря на то, что этот вопрос относится к OSX, я оставлю здесь следующее, которое работает на Windows 7 64-битной. Этот вопрос был признан одним из лучших результатов при поиске приложений, заставляющих приложения проходить через определенный адаптер, поэтому следующее может быть полезным для других.
http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/
В приведенном выше руководстве используется утилита ForceBindIp, которая объявлена для работы в Windows NT/2000/XP/2003
но у меня не возникло проблем с тем, чтобы она работала в Windows 7 - 64 Bit.