Я надеюсь, что кто-то может помочь...
Я хочу настроить 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
включить пересылку пакетов в ядре
echo 1 > /proc/sys/net/ipv4/ip_forward
включить NAT в iptables
sudo iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
включить пересылку для интерфейсов vpn
sudo iptables --append FORWARD --in-interface as0t0 -j ACCEPT
sudo iptables --append FORWARD --in-interface as0t1 -j ACCEPT
Это базовая конфигурация для стороны маршрутизации, не стесняйтесь комментировать, если вам нужна более подробная помощь.