3

Моя домашняя сеть в США находится за маршрутизатором Buffalo (G300NH), на котором установлена их версия DD-WRT. Я использую встроенный PPTP VPN-клиент для подключения к VPN-провайдеру в Великобритании. Я маршрутизирую определенный трафик через VPN (поэтому он имеет исходный адрес в Великобритании по различным вполне законным причинам), чего я достиг, следуя инструкциям в документации DD-WRT и инструкциям моего провайдера VPN. Я поместил две команды, как это в сценарии брандмауэра:

route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0
route add -net yyy.yyy.0.0 netmask 255.255.0.0 dev ppp0

Я не вставлял ни одно из правил iptables, так как, похоже, они не нужны моей настройке. Отлично работает. Трафик в подсети xxx идет через VPN, все остальное идет через собственные каналы моего провайдера.

Проблема возникает, когда VPN падает, что иногда происходит. DD-WRT прекрасно справляется с автоматическим переподключением, но маршруты каждый раз сбрасываются.

Как мне автоматизировать процесс восстановления маршрутов? Я думал о статических маршрутах, но IP-адрес VPN-подключения назначается динамически (именно поэтому я использую dev ppp0).

4 ответа4

3

Проблема с реализацией dd-wrt заключается в том, что клиент pptp правильно устанавливает таблицу маршрутов, а сервер - нет. Как правило, вы можете подключиться с клиента, но не с сервера. Это исправит таблицу маршрутов на стороне сервера каждый раз, когда будет установлено соединение, и будет работать после перезагрузок и переподключений.

В DD-WRT, работающем от имени сервера pptp, нажмите на вкладку «администрация», затем на вкладку «команда», затем введите:

/bin/sh -c 'echo "ip route add XX.XX.XX.0/24 dev ppp0" >> /tmp/pptpd/ip-up'

Затем сохраните как «Скрипт запуска», чтобы сделать его постоянным. Конечно, измените XX в подсети сети КЛИЕНТА. Если у вас есть несколько клиентских подсетей, просто добавьте несколько строк вышеупомянутых с правильными подсетями для каждой клиентской сети.

3

Команда sed работает нормально, за исключением того, что dd-wrt не создает файл ip-up до тех пор, пока не запущен демон pptpd. Поэтому я добавил задержку в сценарий запуска, чтобы дать время, а также выполнить команду ip-up после добавления маршрутов. Это должно решить это для вас.

Вот команда запуска для вашего роутера:

sleep 40
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\nroute add -net yyy.yyy.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
/tmp/pptpd_client/ip-up

Вы могли бы альтернативно сделать это:

sleep 40
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
/tmp/pptpd_client/ip-up

добавив столько маршрутов, сколько необходимо. & Заменяет exit 0 .

1

Вы хотели бы поместить команды маршрута в сценарий ip-up, который вызывается, когда появляется ссылка. Я не уверен, где именно их поместить в dd-wrt; Я перешел на openwrt, но вот ссылка, которая может помочь?

http://83.141.4.210/phpBB2/viewtopic.php?p=93158

0

Вы не можете редактировать или добавлять файлы, которые легко на некоторых маршрутизаторах ddwrt.

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

Вот обходной путь, который, кажется, работает на большинстве маршрутизаторов http://stadar.org/content/ddwrt-pptp-client-add-routes-after-connection

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