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.