Я установил OpenVPN на Raspberry PI (сервер: 192.168.0.2) и на своем ноутбуке Ubuntu (клиент: 192.168.0.3). Обе машины подключены к одной беспроводной сети, и их адреса назначены DHCP от беспроводного маршрутизатора по адресу 192.168.0.1. Однако, когда VPN запускается, я не могу получить доступ к Интернету с клиента.

Когда я запускаю OpenVPN на сервере (со следующими параметрами), он запускается правильно.

port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
cipher AES-256-CBC
auth SHA512
topology subnet
server 10.8.0.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Когда я запускаю OpenVPN на клиенте (со следующими параметрами), он тоже, кажется, запускается правильно.

ca keys/ca.crt
cert keys/client-no-pass.crt
key keys/client-no-pass.key
remote 192.168.0.2 1194
comp-lzo
client
dev tun
redirect-gateway local
remote-cert-tls server
cipher AES-256-CBC
auth SHA512
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
mute 20

На клиенте я вижу, что моей таблицей IP-маршрутизации манипулировали, чтобы использовать IP-адрес VPN сервера в качестве маршрута по умолчанию, и что весь трафик в сеть VPN будет поступать с IP-адресом tun0 10.8.0.4.

me@client:~$ ip route
default via 10.8.0.1 dev tun0 
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.4 
169.254.0.0/16 dev wlp4s0  scope link  metric 1000 
192.168.0.0/24 dev wlp4s0  proto kernel  scope link  src 192.168.0.3 metric 600

Когда VPN отключена, я могу пинговать 8.8.8.8 (DNS-сервер). Когда VPN подключен, я не могу.

После поиска в Google я попытался добавить это на сервер, но это не помогает:

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o wlan0 -j SNAT --to-source 192.168.0.2

Что я делаю неправильно? Как я могу это исправить? Мой сценарий локальной сети WLAN VPN просто не поддерживается? Я попытался запустить Wireshark для захвата трафика tun0 от клиента, но не смог решить эту проблему.

РЕДАКТИРОВАТЬ: Дополнительная информация:

  1. IP-адрес сервера был "зарезервирован" (по MAC-адресу), поэтому маршрутизатор всегда назначает ему один и тот же адрес. 192.168.0.2

  2. Сервер настроен (путем редактирования /etc/sysctl.conf) для пересылки пакетов IPV4, и это было проверено с помощью команды cat /proc/sys/net/ipv4/ip_forward (возвращает 1)

  3. Таблица маршрутизации сервера показывает это:

me@server:~$ ip route
default via 192.168.0.1 dev wlan0  metric 303
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.1
192.168.0.0/24 dev wlan0  proto kernel  scope link  src 192.168.0.2  metric 303
  1. Брандмауэр сервера выглядит так:
me@server:~ $ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -i tun0 -o wlan0 -m conntrack --ctstate NEW -j ACCEPT

me@server:~ $ sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -s 10.8.0.0/24 -o wlan0 -j MASQUERADE

1 ответ1

1

Необходимо убедиться, что на вашем VPN-сервере правильно работают как маршрутизация, так и трансляция сетевых адресов (NAT). Попробуйте использовать tcpdump для проверки сетевого трафика на VPN-интерфейсе сервера и Ethernet-порту, чтобы убедиться, что пакеты передаются, и каковы их адреса. Чтобы ответить на ваш комментарий о том, можно ли это сделать с помощью этого дизайна, он, безусловно, может и является отличным способом узнать обо всех задействованных концепциях.

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

cat /proc/sys/net/ipv4/ip_forward

возвращает ноль, затем он выключен и никакие правила брандмауэра не спасут вас. Вы можете запустить echo 1 > /proc/sys/net/ipv4/ip_forward чтобы включить его, но вместо этого посмотрите все руководство, чтобы выполнить все необходимые шаги, а также инструкции по выполнению этого изменения (оно будет потеряно каждый раз). время перезагрузки иначе).

Кроме того, если вы используете DHCP для VPN-сервера, вы, вероятно, захотите использовать MASQUERADE вместо SNAT, поскольку IP-адрес может измениться, и тогда ваше правило брандмауэра будет неверным.

Обратите внимание, что если вы не хотите использовать NAT, вам необходимо сообщить локальному маршрутизатору (подключенному к вашему провайдеру), что ваша подсеть VPN (10.8.0.0/24) находится за IP-адресом вашего сервера VPN (192.168). 0.2). Сейчас он не знает, как найти 10.8.0.4, поэтому просто отбросит ответные пакеты.

Опять же, если адрес сервера назначен DHCP, то это может измениться, и вам потребуется обновить запись маршрутизации, и вы даже не сможете добавить этот маршрут, если вы используете маршрутизатор вашего провайдера, и они не позволяют вам администрировать их устройство.

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