Назад | Перейти на главную страницу

Настройка таблицы маршрутов для маршрутизации только одного (или диапазона IP-адресов) через VPN-соединение

Это конфигурация моей домашней сети:

Устройства / ПК / Смартфон ---> DD-WRT Router ---> Интернет-маршрутизатор ---> Интернет / Мир

Я хотел бы настроить маршрутизатор с прошивкой DD WRT с запущенным клиентом PPTP VPN. Виртуальное устройство PPTP VPN называется ppp0.

затем :

Когда я запускаю VPN-клиент на DD WRT, моя таблица маршрутов

0.0.0.0 via 192.168.1.254 dev eth0 
default via 192.168.120.10 dev ppp0  scope link 
8.8.8.8 via 192.168.1.254 dev eth0 
62.101.93.101 via 192.168.1.254 dev eth0 
127.0.0.0/8 dev lo  scope link 
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.132 
192.168.1.254 via 192.168.1.254 dev eth0 
192.168.120.10 dev ppp0  scope link 

Теперь я думаю, что мне нужно заменить

с участием

поэтому ВСЕ ip проходят через стандартный интернет-шлюз (без PPTP vpn) ... затем добавьте правило, например

чтобы разрешить ТОЛЬКО ip 192.168.1.40 для выхода с использованием PPTP.

Но .. это не работает!

Итак, мой последний вопрос:

Большое спасибо!

Сетевой маршрут не принимает во внимание исходный IP-адрес, только IP-адрес назначения. Это похоже на высказывание «если кто-то хочет перейти в сеть 1.2.3.4, используйте 192.168.1.xx в качестве шлюза».

Вы хотите сказать: «Трафик, исходящий с этого IP-адреса, идет в Интернет через этот конкретный шлюз».

Это немного сложнее. Стандартным решением для этого в Linux является использование функций пакета iproute2.

  1. Создайте новый маршрут по умолчанию в альтернативной таблице ip route add table 55 default via 192.168.20.10 dev ppp0
  2. Отметьте пробки, которые хотите проложить iptables -t mangle -I PREROUTING 1 -s 192.168.1.40 -j MARK --set-mark 55
  3. Создайте правило, чтобы трафик, помеченный как 55, направлялся через таблицу 55 ip rule add fwmark 55 table 55

На этом этапе, если вы запустите tcpdump на интерфейсе ppp0 и отправите некоторый трафик со своего устройства 192.168.1.40, вы должны увидеть некоторый трафик.

Теперь у вас наверняка будут 2 проблемы:

  1. NAT: вероятно, вам придется добавить правило nat, чтобы трафик, идущий через интерфейс ppp0, был привязан к IP-адресу интерфейса
  2. фрагментация: ваш интерфейс ppp0, вероятно, имеет MTU, который меньше, чем mtu вашего интерфейса eth0, поэтому вам нужно установить правило TCPMSS для ограничения трафика на уровне между 1300 и 1400