Включение маршрутизации IP
Большинство дистрибутивов Linux по умолчанию не разрешают маршрутизацию IP-пакетов, но нам оно необходимо для маршрутизации пакетов VPN через интерфейс PPP. Изменять статус маршрутизации IP можно, изменяя соответствующий параметр ядра. Хотя возможно перекомпилировать ядро и изменить значения, установленные по умолчанию, наиболее легкий способ – использовать файловую систему /proc. Файлы в /proc, в действительности, файлами не являются, а представляют собой способы доступа и/или модификации параметров ядра и для того, чтобы изменить их вы должны иметь статус root. Таким образом, простейший способ включить маршрутизацию через порт – запустить следующую команду:
root# echo 1 > /proc/sys/net/ipv4/ip_forward
Эта команда автоматически включит маршрутизацию IP-пакетов по умолчанию во всех интерфейсах. При создании VPN архитектуры хост-хост это существенно. Если вы желаете создать VPN типа сеть-сеть или хост-сеть, вам может понадобиться включить маршрутизацию IP-пакетов только для тех интерфейсов, через которые и осуществляется маршрутизация. Например, в случае большого VPN-сервера вам может понадобится осуществлять маршрутизацию через все интерфейсы ppp (связи VPN) и через интерфейс eth1 (внутренний интерфейс), но не через все интерфейсы Ethernet. Это можно сделать, используя следующий скрипт shell: #!/bin/sh
echo “Setting up IP forwarding rules” echo 1 > /proc/sys/net/ipv4/ip_forward echo -n “/proc/sys/net/ipv4/ip_forward: “ cat /proc/sys/net/ipv4/ip_forward for forwarding in /proc/sys/net/ipv4/conf/*/forwarding do echo -n “$forwarding: “;
interface=`dirname $forwarding` interface=`basename $interface`
case “$interface” in ppp*|eth1) # список интерфейсов # прохождение через которые нужно включить echo 1 > $forwarding ;;
*) # Выключить прохождение для всех интерфейсов echo 0 > $forwarding ;; esac
cat $forwarding done
Обязательно настройте выражения в операторе case в соответствии с вашими требованиями к маршрутизации IP-пакетов. В данном случае разрешается маршрутизация пакетов через интерфейс eth1 и все ppp-интерфейсы (ppp0, ppp1, …), а для всех прочих интерфейсов пакеты будут отбрасываться.