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

Маршрутизация туннеля OpenVPN через общедоступный интерфейс и выход через интерфейс NAT (в Интернет)

Я надеюсь, что кто-то может помочь...

Я хочу настроить OpenVPN-AS (т.е. сервер доступа OpenVPN, а НЕ OpenVPN) для работы на моем VPS. VPS - это KVM под управлением Ubunto 10.04 LTS с очень ванильной конфигурацией. OpenVPN-AS также устанавливается с минимальным «привкусом».

Сервер имеет два интерфейса (для обоих DHCP, eth1 не настроен шлюз по умолчанию, но есть один доступный): - eth0 (общедоступный IP-адрес, который НЕ геолокационирован в США) и - eth1 (частный IP-адрес, который может NAT через маршрутизатор с геолокацией в США)

Большая часть трафика, включая туннель OpenVPN (UDP / 1194), поступает через eth0, но туннелированные клиенты должны выходить через eth1, чтобы получить преимущество IP-адреса в США. Я думаю, что есть две отдельные проблемы: 1) настройка IP так, чтобы был шлюз для туннелированных клиентов, чтобы уходить через маршрутизатор NAT 2) настройка OpenVPN-AS, чтобы клиенты использовали этот шлюз для доступа в Интернет.

Файл / etc / network / interfaces имеет следующий вид:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The internal (private) network interface
auto eth1
iface eth1 inet dhcp
  up   ip route add default via 172.16.0.254  dev eth1  table 100
  down ip route del default via 172.16.0.254  dev eth1  table 100
  up   ip rule  add        from 172.16.0.0/16 iif eth1 lookup 100
  down ip rule  del        from 172.16.0.0/16 iif eth1 lookup 100
  up   iptables -t nat -A POSTROUTING -s 5.5.0.0/20 -j SNAT --to-source 172.16.191.125
  down iptables -t nat -D POSTROUTING -s 5.5.0.0/20 -j SNAT --to-source 172.16.191.125

Сеть выглядит следующим образом:

root@us-tunnel:~# ifconfig | grep -A 1 encap
as0t0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:5.5.0.1  P-t-P:5.5.0.1  Mask:255.255.248.0
--
as0t1     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:5.5.8.1  P-t-P:5.5.8.1  Mask:255.255.248.0
--
eth0      Link encap:Ethernet  HWaddr 00:16:3c:34:01:20
          inet addr:209.141.60.114  Bcast:209.141.60.255  Mask:255.255.255.0
--
eth1      Link encap:Ethernet  HWaddr 00:16:3c:55:84:81
          inet addr:172.16.191.125  Bcast:172.16.255.255  Mask:255.255.0.0
--
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0

Таблица маршрутов выглядит следующим образом:

root@us-tunnel:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
209.141.60.0    *               255.255.255.0   U     0      0        0 eth0
5.5.0.0         *               255.255.248.0   U     0      0        0 as0t0
5.5.8.0         *               255.255.248.0   U     0      0        0 as0t1
172.16.0.0      *               255.255.0.0     U     0      0        0 eth1
default         209.141.60.1    0.0.0.0         UG    100    0        0 eth0

Вам нужно будет сделать несколько шагов, чтобы это заработало.

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

Вы можете сделать это либо добавив строки «маршрута» в файл конфигурации клиента, либо добавив

"--pull" 

в конфигурацию клиента, а затем добавив свои маршруты в конфигурацию сервера.

"push route 0.0.0.0 5.5.0.1"
"push route 0.0.0.0 5.5.8.1"

Во-вторых, вам необходимо настроить iptables, чтобы разрешить входящие пакеты из сети vpn, а также включить маскарад и пересылку нат на стороне сервера.

Чтобы включить пересылку пакетов и Nat

  1. включить пересылку пакетов в ядре

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  2. включить NAT в iptables

    sudo iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
    
  3. включить пересылку для интерфейсов vpn

    sudo iptables --append FORWARD --in-interface as0t0 -j ACCEPT
    sudo iptables --append FORWARD --in-interface as0t1 -j ACCEPT
    

Это базовая конфигурация для стороны маршрутизации, не стесняйтесь комментировать, если вам нужна более подробная помощь.