LINUX.ORG.RU
ФорумAdmin

OpenVpn Server и Client на одном шлюзе


1

1

есть сервер на Debian 7,

2 настроеные сетевухи: eth0 смотрит в инет (WAN); eth1 смотрит в сеть 192.168.0.0/24 (LAN), настроен nat (компы в сети получают инет)

подняты сервер и клиент Openvpn: tap1-10.8.1.8 UDP 1194 (клиент) и tap0-10.10.1.0 UDP 1195 (сервер)

Теперь как я понимаю мне нужно прописать маршруты и правила в iptables, с чем прошу помощи...

1) tap1 - поднялся и с шлюза проходят пинги до сервера опенвпн по каналу (10.8.1.0/24) и в сеть 192.168.1.1/24, но компы из LAN не пингуют сеть за каналом (192.168.1.0/24). Какие маршруты нужно прописать?!

2) какие маршруты нужно прописать для того чтобы к моему серверу (10.10.1.0/24) смогли подключаться клиенты с сетями -192.168.2.0/24 -192.168.3.0/24 и -192.168.4.0/24

3) причем каналы 10.8.1.0 и 10.10.1.0 не должны пересекаться, т.е чтобы из 192.168.3.0 нельзя было подключиться к 192.168.1.0 с Linux общаюсь только 2 недели, поэтому прошу снисхождения к моим малым знаниям.

route

Kernel IP routing table
Destination     Gateway         Genmask        Flags Metric Ref    Use Iface
default         46.X.X.1        0.0.0.0         UG    0      0        0 eth0
10.8.1.0        *               255.255.255.0   U     0      0        0 tap1
10.10.1.0       *               255.255.255.0   U     0      0        0 tap0
46.X.X.0        *               255.255.255.0   U     0      0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth1
192.168.1.0     10.8.1.1        255.255.255.0   UG    0      0        0 tap1

iptables-save

Generated by iptables-save v1.4.14 on Sun Jun 16 14:11:28 2013
*mangle
:PREROUTING ACCEPT [9725:3993176]
:INPUT ACCEPT [4029:246070]
:FORWARD ACCEPT [5636:3744058]
:OUTPUT ACCEPT [330:80518]
:POSTROUTING ACCEPT [5966:3824576]
COMMIT
# Completed on Sun Jun 16 14:11:28 2013
# Generated by iptables-save v1.4.14 on Sun Jun 16 14:11:28 2013
*filter
:INPUT DROP [3464:196752]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m multiport --ports 50100:51100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 1195 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i tap1 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -o tap1 -j ACCEPT
-A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth1 -o tap0 -j ACCEPT
-A FORWARD -i eth1 -o tap1 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
COMMIT
# Completed on Sun Jun 16 14:11:28 2013
# Generated by iptables-save v1.4.14 on Sun Jun 16 14:11:28 2013
*nat
:PREROUTING ACCEPT [3942:242706]
:INPUT ACCEPT [139:8767]
:OUTPUT ACCEPT [2:138]
:POSTROUTING ACCEPT [4:258]
-A PREROUTING -i eth0 -p udp -m udp --dport 1398 -j DNAT --to-destination 192.168.0.114:1398
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Jun 16 14:11:28 2013
root@mars:~# 

root@mars:~# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:14:85:0a:d0:d8
          inet addr:46.X.X.191  Bcast:46.X.X.255  Mask:255.255.255.0
          inet6 addr: fe80::214:85ff:fe0a:d0d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:126950 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63516 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:85431911 (81.4 MiB)  TX bytes:8096452 (7.7 MiB)

eth1      Link encap:Ethernet  HWaddr 00:e0:53:12:47:0d
          inet addr:192.168.0.212  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:53ff:fe12:470d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:75676 errors:0 dropped:129 overruns:0 frame:0
          TX packets:79864 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9126668 (8.7 MiB)  TX bytes:81693622 (77.9 MiB)
          Interrupt:21 Base address:0xa000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1176 (1.1 KiB)  TX bytes:1176 (1.1 KiB)

tap0      Link encap:Ethernet  HWaddr 52:6e:53:0d:7b:dc
          inet addr:10.10.1.1  Bcast:10.10.1.255  Mask:255.255.255.0
          inet6 addr: fe80::506e:53ff:fe0d:7bdc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

tap1      Link encap:Ethernet  HWaddr b2:5c:19:29:49:62
          inet addr:10.8.1.8  Bcast:10.8.1.255  Mask:255.255.255.0
          inet6 addr: fe80::b05c:19ff:fe29:4962/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5604 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3039 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:235872 (230.3 KiB)  TX bytes:1350251 (1.2 MiB)



Последнее исправление: kokos10111 (всего исправлений: 2)

1. Вот скажи, науя тебе tap? Сделай tun, не сношай моск - c tun проще и оверхед меньше.

2. Для диагностики данных катастрофически мало. Для нормальной диагностики нужен выхлоп route -n со следующих узлов: вышестоящего сервера, локалки вышестоящего сервера, твоего сервера, твоей локалки, сервера нижестоящего (клиента к твоему серверу) и локалки нижестоящего сервера. Нужны конфиги openvpn.

3. Куда кому можно и куда нельзя надо решать не «маршрутизацией», а «межсетевыми экранами», a.k.a. файрволами (угу, iptables)

4. Да, прочел твой выхлоп iptables и прослезился (исходя из условий которые ты сам написал) - такого потока сознания я давно не видел, особенно в FORWARD :-)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

1) именно tap, потому что на сервере (который, админит другой админ) к коему поднимаю клиента, уже поднят tap и править все подключения на tun меня никто не пустит.

2) я бы и сам прослезился наверно, если бы не впервые с этим сталкивался.... а т.к. linux только начал познавать, то наверно еще не раз заставлю форум всплакнуть.

3) вообщем проблема решилась правкой iptables и добавлением правил $IPT -t nat -A POSTROUTING -o $VPNS -s $LAN_IP_RANGE -j MASQUERADE $IPT -t nat -A POSTROUTING -o $VPNC -s $LAN_IP_RANGE -j MASQUERADE где, $VPNS=tap0, a $VPNC=tap1, $LAN_IP_RANGE=192.168.0.0/24

а вот что в итоге получилось, худо бедно, но работает

root@mars:~# iptables-save
# Generated by iptables-save v1.4.14 on Sun Jun 16 16:43:20 2013
*mangle
:PREROUTING ACCEPT [62675:20815657]
:INPUT ACCEPT [26777:1854751]
:FORWARD ACCEPT [35292:18928573]
:OUTPUT ACCEPT [3916:1184075]
:POSTROUTING ACCEPT [39206:20111108]
COMMIT
# Completed on Sun Jun 16 16:43:20 2013
# Generated by iptables-save v1.4.14 on Sun Jun 16 16:43:20 2013
*filter
:INPUT DROP [19898:1196397]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -i tap0 -j ACCEPT
-A INPUT -i tap1 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m multiport --ports 50100:51100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A OUTPUT -o tap0 -j ACCEPT
-A OUTPUT -o tap1 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
COMMIT
# Completed on Sun Jun 16 16:43:20 2013
# Generated by iptables-save v1.4.14 on Sun Jun 16 16:43:20 2013
*nat
:PREROUTING ACCEPT [25396:1770784]
:INPUT ACCEPT [1107:77152]
:OUTPUT ACCEPT [8:440]
:POSTROUTING ACCEPT [8:440]
-A PREROUTING -i eth0 -p udp -m udp --dport 1398 -j DNAT --to-destination 192.168.0.114:1398
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o tap0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o tap1 -j MASQUERADE
COMMIT
# Completed on Sun Jun 16 16:43:20 2013
root@mars:~#
kokos10111
() автор топика
Ответ на: комментарий от kokos10111

и сам скрипт

#!/bin/bash

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть
export LAN=eth1
export LAN_IP_RANGE=192.168.0.0/24

# Канал OpenVpn от сервера 
export VPNS=tap0

# Канал OpenVpn от клиента до сервера
export VPNC=tap1

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A INPUT -i $VPNS -j ACCEPT
$IPT -A INPUT -i $VPNC -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT
$IPT -A OUTPUT -o $VPNS -j ACCEPT
$IPT -A OUTPUT -o $VPNC -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $VPNS -s $LAN_IP_RANGE -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $VPNC -s $LAN_IP_RANGE -j MASQUERADE


**********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Открытие портов для торрентов (такие же указать в torrent-клиенте)
$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 50100:51100 -j ACCEPT

# Открытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT

# порт для Стерха
$IPT -t nat -A PREROUTING -i $WAN -p udp --dport 1398 -j DNAT --to-destination 192.168.0.114:1398


# **********************************************************************
# Вывод информации о состоянии
$IPT -L

если будут предложения по усовершенствованию сего, с удовольствием прислушаюсь

kokos10111
() автор топика
Ответ на: комментарий от kokos10111

И все же оказалось не все так хорошо как хорошо казалось... Подскажите плиз, где я косячнул?! Компы из сети 192.168.1.0 которые подключаются по ВПН каналу (10.8.1.0) доходят только до моего шлюза, а дальше в сеть пинги не проходят...

kokos10111
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.