Прямо сейчас у меня настроен 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>