У меня возникла проблема с настройкой OpenVPN.
Это происходит, когда я подключен: я могу пинговать сервер 192.168.42.1 с клиента 192.168.42.6 и наоборот. Я могу получить доступ к слушающим демонам на сервере 192.168.42.1 (http и dns). Я могу получить доступ к серверу по его интернет-IP, но соединение не маршрутизируется в VPN (я сделал traceroute, он проходит через мой домашний маршрутизатор). Я не могу получить доступ ни к какому другому интернет-IP (в traceroute nmap я вижу только одну строку с 192.168.42.1!).
Вот моя конфигурация сервера OpenVPN:
port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.42.1"
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status openvpn-status.log
verb 4
script-security 2
push "redirect-gateway def1"
auth-user-pass-verify /home/openvpn/chroot/login.php via-file
port-share 127.0.0.1 4433
max-clients 10
daemon
Вот часть моей конфигурации iptables:
# current configuration (i removed some lines concerning other ports)
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
# lines added for OpenVPN
iptables -A FORWARD -i tun0 -o em1 -s 192.168.42.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o em1 -j MASQUERADE
Что я могу сделать? Спасибо за помощь.
решение1
Из вашего вопроса и конфигурации я делаю вывод, что вы намерены разрешить клиенту доступ в Интернет через сервер.
В таком случае мне кажется, что ваша конфигурация openvpn правильная.
Однако ваша фильтрация не является полной. В таком случае вы настраиваете ее на пересылку новых пакетов из tun0 в em0 (который, как я предполагаю, является соединением Ethernet на сервере), но не на пересылку последующих пакетов или вообще каких-либо пакетов из em0 в tun0. Двунаправленная связь требуется почти для всех интернет-протоколов.
Поэтому я бы добавил в вашу конфигурацию строки:
iptables -A FORWARD -i tun0 -o em1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i em1 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Вы также должны убедиться, что /proc/sys/net/ipv4/ip_forward содержит 1, и если нет, выполнить
sudo echo "1" > /proc/sys/net/ipv4/ip_forward
В зависимости от вашего дистрибутива, должен быть способ сделать эту последнюю настройку постоянной (команда делает ее действительной только до следующей перезагрузки).