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

Настройте сервер для маршрутизации всего трафика через OpenVPN

У меня есть настройка openvpn, которая отлично работает. Подключено около 50 клиентов и все под рукой, денди. Мне нужен один из этих клиентов для маршрутизации всего трафика через vpn. Я установил ccd для этого конкретного клиента и добавил push "redirect-gateway def1" к нему. Таблица маршрутизации кажется обновленной в клиенте. Я могу получить доступ ко всем хостам в vpn, но не могу получить доступ ни к чему другому за пределами vpn. При трассировке с клиента все идет на шлюз vpn, но дальше не дальше. Я считаю, что виноват конфигурация iptables на сервере.

Это установка

С 10.171.0.1 (КЛИЕНТ) я могу пинговать 10.170.0.1 (VPNGATEWAY). Фактически я могу пинговать все хосты в 10.170.x.x и 10.171.x.x. Но не могу пинговать 8.8.8.8.

Это iptables conf

Есть куча правил и я их убрал, чтобы было проще.

*filter
:INPUT DROP [1000:900000]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -s 127.0.0.1 -j ACCEPT 

# here were some rules accepting certain ports  22, 80, etc

-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 13 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 30 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

# this is the client that needs internet thru the gateway
# i've tried to make as permissive as possible but still to no avail
-A INPUT -s 10.171.0.1 -j ACCEPT
-A FORWARD -s 10.171.0.1 -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
COMMIT

Я дополнительно пробовал добавить

iptables -t nat -A POSTROUTING -s 10.171.0.1 -o eth0 -j MASQUERADE

Но все равно никакой работы. Любые идеи?

У вас есть эти два правила, которые разрешают ваш трафик. Но эти правила, вероятно, не то, что вам нужно.
или хотя бы не только то, что вы хотите.

-A INPUT -s 10.171.0.1 -j ACCEPT
-A FORWARD -s 10.171.0.1 -j ACCEPT

Кажется, что ваш набор правил брандмауэра рассчитан на отслеживание состояния, но эти два правила не имеют состояния. Вам нужно либо добавить два правила для обработки трафика в другом направлении, либо добавить некоторое сопоставление состояний.