3

Прямо сейчас у меня настроен PPTP VPN на удаленном Vbu Ubuntu. Я хотел бы, чтобы некоторые приложения использовали VPN для доступа в Интернет (rtorrent, irssi, среди прочих). В настоящее время он настроен так:

eth0 Link encap:Ethernet HWaddr 00:16:3e:94:38:ce inet addr:66.xxx.xxx.xxx Bcast:66.xxx.xxx.xxx Маска:255.255.255.0

eth1 Link encap:Ethernet HWaddr 00:16:3e:d7:58:a1 inet addr:10.2.0.111 Bcast:10.255.255.255 Маска:255.0.0.0

lo Link encap:локальный адрес обратной связи inet:127.0.0.1 маска:255.0.0.0

ppp0 Link encap:IP-адрес протокола точка-точка:192.168.10.244 PtP:192.168.9.1 Маска:255.255.255.255

По сути, то, как я видел эту проблему, выглядит следующим образом.

Когда я бегу

curl --interface eth0 checkip.dyndns.com

я получил

<html><head><title>Current IP Check</title></head><body>Current IP Address: 66.xxx.xxx.xxx</body></html>

И когда я бегу

curl --interface ppp0 checkip.dyndns.com

я получил

<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>

Что правильно.

Тем не менее, когда я бегу

curl --interface 192.168.10.244 checkip.dyndns.com

время истекло, и я ничего не получаю. Кажется, что это не имеет никакого смысла, так как 192.168.10.244 - это IP-адрес ppp0, и мне не кажется, что он должен отличаться от приведенной выше команды. Я что-то пропустил? Если я смогу заставить это работать в curl, я смогу заставить его работать в rtorrent и irssi, как мне хотелось бы, а curl просто проще протестировать для такого рода вещей. Есть ли хорошие отправные точки для решения этой проблемы?

РЕДАКТИРОВАТЬ: Исправлено! Вот как я это сделал.

Сначала я создал новую таблицу маршрутизации:

# echo "200 vpn" >> /etc/iproute2/rt_tables

Затем я создал правило для запросов, исходящих с моего IP-адреса ppp0, для поиска из этой новой таблицы.

# ip rule add from 192.168.10.244 table 200

Затем я создал правило в этой таблице для использования ppp0.

# ip route add default dev ppp0 table 200

Работает отлично! Теперь, когда я пытаюсь выполнить ранее неудачную команду curl:

# curl --interface 192.168.10.244 checkip.dyndns.com
<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>

1 ответ1

1

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

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

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