3

иногда мне нужно подключаться к веб-сайтам без прохождения VPN, возможно ли открыть экземпляр Firefox и сказать ему использовать простой интерфейс eth0 вместо tun0?

3 ответа3

0

сетевые правила с ip route и iptables не могут использовать имя программы в качестве критерия

Если вам нужно направлять трафик на другой интерфейс только для Firefox, а не для какого-либо запроса на порт 80, вы можете использовать сетевые пространства имен в новейших ядрах. Они ограничивают доступные системные ресурсы для процесса ("ip netns")

Вот введение с похожим примером:

http://www.dasblinkenlichten.com/an-introduction-to-network-namespaces/

0

Я делал нечто подобное с iptables некоторое время назад. Основное различие между вашей целью и моим проектом заключалось в том, что я пытался перенаправить весь трафик, поступающий из сети, на tun0. Никаких изменений в Firefox не требуется. Суть этого заключается в следующем:

  1. Пользовательская запись в rt_tables создается для обработки определенных пакетов
  2. Все пакеты, предназначенные для порта 80 или определенного IP, отмечены
  3. Все пакеты, соответствующие метке на шаге 2, передаются в таблицу rt_table, указанную на шаге 1.
  4. Пакеты в новых rt_tables должны иметь другой шлюз, чем остальные - IP-адрес eth0

Я нашел свой старый код, который должен работать для вас как есть, или с небольшими изменениями. Это слегка измененный набор кода, который я использовал для запуска на своем шлюзе:

# Create the new custom router table
echo 201 CustomRouter >> /etc/iproute2/rt_tables

# Mark the desired packets for special treatment
iptables -t mangle -A PREROUTING -d 123.123.123.123 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -d 123.123.123.123 -j MARK --set-mark 2

# Assign marked packets to CustomRouter
ip rule add fwmark 2 table CustomRouter

# Set the gateway
ip route add default via 192.168.0.123 dev eth0 table ClientRouter

Выше предполагается, что 123.123.123.123 - это IP-адрес веб-сайта, который вы хотите через eth0, а 192.168.0.123 - это IP-адрес eth0 . Измените две строки с этим IP-адресом так, чтобы он совпадал с любым, будь то все на порте 80 или только один конкретный IP-адрес. 123.123.123.123 - это просто поддельный IP, который я использовал для проверки этого.

Обратите внимание, что строка, которая создает CustomRouter в rt_tables , не должна выполняться каждый раз. Скрипт Perl, из которого я извлек это, имеет проверку, чтобы увидеть, есть ли он там, поэтому я считаю, что это может быть сделано только один раз, или, возможно, один раз при каждой загрузке.

0

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

ip route add websiteIP via gatewayIP dev eth0

Здесь вы добавляете IP-адрес веб-сайта, который вы хотите посетить на websiteIP IP, и добавляете ваш обычный IP-адрес шлюза на gatewayIP .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .