PDA

Показать полную графическую версию : OpenVPN не видит внешку


ganselo
06-09-2011, 00:36
Привет, ситуация такая
Есть Linux сервер (CentOS 6), поставил на нём OpenVPN, с клиента коннект происходит нормально, а в инет не выходит.
На сервере iptables отключён. Все конфиги и ключи в целях теста взял с другого сервера (ос та же). Там всё работает.
Привожу конфиг
openvpn.cfg

port 1194
proto tcp
dev tun
tls-server
server 192.168.100.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
client-config-dir /etc/openvpn/ccd
;push "route 192.168.100.0 255.255.255.0"
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
duplicate-cn
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpnserver.crt
key /etc/openvpn/keys/vpnserver.key
dh /etc/openvpn/keys/dh1024.pem


route

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.2 * 255.255.255.255 UH 0 0 0 tun0
65.138.170.112 * 255.255.255.240 U 0 0 0 eth0
192.168.100.0 192.168.100.2 255.255.255.0 UG 0 0 0 tun0
45.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default node46.nqhost.c 0.0.0.0 UG 0 0 0 eth0


в /etc/sysctl.conf

net.ipv4.ip_forward = 1


help!

ganselo
06-09-2011, 10:08
Проблема решена, нужно было включить и настроить iptables.

Silver23
08-09-2011, 10:55
Проблема решена, нужно было включить и настроить iptables. »

Не хотелось бы создавать новую тему - но скажите после того как установилось соединение клиента с сервером - что я должен увидеть - какие изменения - в сетевом окружении должен появится компьютер? У меня просто сервер на Ubuntu, а клиент на Windows, только в конфиге сервера нет строк как у вас
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
duplicate-cn

Спасибо

Сервер OpenVPN стоит на простом Ubuntu Desktop, пингую и сервер с клиента и клиента с сервера по сетки 10.8.0.0/24 и локальные адреса 192.168.1.0/24 и 192.168.0.0/24, iptables на Desktop отключён?

Silver23
09-09-2011, 07:55
а вот и команда iptables --list показал что разрешёно по всем направлениям

ganselo
09-09-2011, 11:41
скажите после того как установилось соединение клиента с сервером - что я должен увидеть - какие изменения - в сетевом окружении должен появится компьютер? »
На клиенте у вас программа OpenVPN (client) GUI? если так, то у вас появляется значек в трее. По цвету значка определяете установлено ли соединение. Ну и в OpenVPN GUI есть лог.

а вот и команда iptables --list показал что разрешёно по всем направлениям »
В iptables вам нужно из eth0 в tun0 перенаправлять трафик.

#!/bin/sh

# Имена сетевых интерфейсов:
# Внешний, на котором "висят" белые адреса нашего сервера:
IF_EXT="eth0"
# Виртуальный интерфейс, на котором будут все пользователи VPN:
IF_VPN="tun0"

# IP-Адреса:
# Внешний (используется для исходящих соединений:
IP_OUT="внешний ip"
# Второй внешний адрес, к нему будут подключаться клиенты:
IP_IN="внешний ip"

# Сеть, в которой будут находиться клиенты нашего VPN-сервера:
NET_VPN="192.168.100.0/255.255.255.0"

# Сбрасываем все правила:
iptables -F
iptables -F -t nat

# Устанавливаем политики по умолчанию:
# Запрещаем весь входящий трафик:
iptables -P INPUT DROP
# Разрешаем исходящий трафик:
iptables -P OUTPUT ACCEPT
# Запрещаем пересылку трафика:
iptables -P FORWARD DROP

# Разрешаем входящий трафик в рамках установленных соединений:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Разрешаем весь трафик внутри сервера:
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем ICMP-трафик для всех:
iptables -A INPUT -p icmp -j ACCEPT

# Разрешаем SSH на IP-адресе для входящих подключеий:
iptables -A INPUT -m tcp -p tcp --dport 22 -d ${IP_IN} -j ACCEPT

# Разрешаем HTTP на IP-адресе для входящих подключеий:
iptables -A INPUT -m tcp -p tcp --dport 80 -d ${IP_IN} -j ACCEPT

# Разрешаем FTP на IP-адресе для входящих подключеий:
iptables -A INPUT -m tcp -p tcp --dport 20 -d ${IP_IN} -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 21 -d ${IP_IN} -j ACCEPT
iptables -A INPUT -p tcp -mmultiport --destination-ports 49152:65534 -j ACCEPT

# Разрешаем OpenVPN на IP-адресе для входящих подключений::
iptables -A INPUT -m tcp -p tcp --dport 1194 -d ${IP_IN} -j ACCEPT

# Разрешаем использование DNS-сервера клиентами VPN-сервера
iptables -A INPUT -m udp -p udp --dport 53 -s ${NET_VPN} -i ${IF_VPN} -j ACCEPT

# NAT для сети VPN:
iptables -t nat -A POSTROUTING -s ${NET_VPN} -j SNAT -o ${IF_EXT} --to-source ${IP_OUT}
iptables -A FORWARD -i ${IF_VPN} -o ${IF_EXT} -s ${NET_VPN} -j ACCEPT
iptables -A FORWARD -i ${IF_EXT} -o ${IF_VPN} -d ${NET_VPN} -m state --state RELATED,ESTABLISHED -j ACCEPT

Silver23
10-09-2011, 05:49
В iptables вам нужно из eth0 в tun0 перенаправлять трафик. »
Большое спасибо за полезную информацию, а можно вопрос что обозначает ${IP_IN} ${IF_EXT} ${NET_VPN} ${IP_OUT} - их так и нужно оставлять или заменять, я в принципе понимаю что за аббревиатура (ip входящие, ip исходящие)

ganselo
10-09-2011, 13:59
Вам нужно сменить в начале скрипта:

IP_OUT="внешний ip"
IP_IN="внешний ip"


И если интерфейсы отличаются:

IF_EXT="eth0"
IF_VPN="tun0"


Т.е. создаёте в начале переменные и дальше используете их.




© OSzone.net 2001-2012