OpenVPN не є шлюзом за замовчуванням для всього трафіку


21

Я намагаюся змусити мого клієнта переадресувати весь трафік через VPS під управлінням OpenVPN. Як бачите, це дозволить пінг-файлам як доменів, так і необроблених IP-адрес, але не дозволить трафіку, подібному до скрученого і traceroute, нічого не придумати. Трафік працює правильно, коли він не підключений до VPN.

Вся інформація тут: https://pastebin.com/tGspNefn

Дякую.

Робота конфігурацій завдяки рішенню нижче:

Сервер:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Клієнт:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3

/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 чому маска 128.0.0.0?
Антоні Гіббс

Дякую DrDinosaur за те, що він вказав serverfault.com/questions/312860/…
Антоні Гіббс

3
Наступного разу витягніть відповідну інформацію та включіть її у запитання. Фрагменти пастебіна мають обмежений термін експлуатації.
MLu

Відповіді:


34

У рішення є дві частини:

1. Перенаправити весь трафік в тунель

Найпростіше рішення - скористайтеся --redirect-gateway autolocalопцією OpenVPN (або помістіть її у конфігураційний файл як redirect-gateway autolocal.

2. Обробляйте трафік на сервері OpenVPN

Тепер, коли тунель піднятий, весь трафік йде в тунель і спливає на кінці сервера з tun0інтерфейсу.

Щоб налаштувати роботу, потрібно налаштувати дві речі:

а. Увімкнути переадресацію пакетів

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

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

Після тестування зробити зміни постійними /etc/sysctl.conf

Також переконайтеся, що iptablesвони не блокують переадресований трафік:

~ # iptables -I FORWARD -j ACCEPT

Це досить добре для тестування - у виробництві ви хочете зробити правила брандмауера дещо конкретнішими, але це не виходить тут.

б. NAT вихідні пакети з тунелю

Якщо режим переадресації включений, пакети за замовчуванням пересилаються без зміни їх джерела, тобто у вашому випадку 10.8.0.6- такі пакети або відкидаються на шлюз ISP, або навіть якщо вони добираються до місця призначення, відповідь ніколи не знаходить зворотного шляху. Ці приватні адреси не є маршрутизованими в Інтернеті.

Рішення полягає в тому, щоб NAT трафік виходу, тобто замінити приватну 10.8.0.6адресу на загальнодоступний IP-сервер VPN. Це гарантуватиме, що відповіді дістаються до VPN-сервера, і там вони повернуться назад в тунель.

~ # iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3. Перевірте це

Тепер спробуйте ping 8.8.4.4від свого VPN-клієнта. Ви повинні побачити відповідь. Повідомте нас, якщо ні :)


Це зараз ідеально працює. Велике спасибі за високу відповідь.
DrDinosaur

На стороні клієнта в командний рядок додайте додавання, витягніть файл client.conf, або опцію додати --pull, щоб клієнт прийняв конфігурацію, надіслану сервером. Крім того, якщо клієнт працює під управлінням Windows Vista або новіше відключає UAC, інакше служба openpn, що працює на клієнті, не зможе встановити маршрути.
Віктор

> b. НАТ вихідні пакети з тунелю Це було мені корисно.
FelikZ

Дійсно враховуйте, що правило FORWARD -j ACCEPT робить Сервер відкритим маршрутизатором між усіма його інтерфейсами. Він не повинен використовуватися у виробничих системах. Але для HowTo отримати його в основному швидко працює дуже хороший набір інструкцій.
Sprinterfreak

Чи налаштований Redirect all the traffic into the tunnelкрок у програмі Client?
літак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.