настройка openswan

Прошу помочь с настройкой openswan

Нужно две сети объединить в одну через сеть провайдера.

192.168.0.100/24 > 10.X.Y.Z = 10.E.R.T < 192.168.40.254/24
Linux Openswan U2.6.32 (netkey)

ipsec стартует

ipsec auto --verbose --up d-s
002 "d-s" #3: initiating Quick Mode RSASIG+ENCRYPT+TUNNEL+PFS+UP+IKEv2ALLOW+SAREFTRACK {using isakmp#1 msgid:73632bbf proposal=defaults pfsgroup=OAKLEY_GROUP_MODP2048}
117 "d-s" #3: STATE_QUICK_I1: initiate
002 "d-s" #3: transition from state STATE_QUICK_I1 to state STATE_QUICK_I2
004 "d-s" #3: STATE_QUICK_I2: sent QI2, IPsec SA established tunnel mode {ESP=>0x1cee2a15 <0x76064d37 xfrm=AES_128-HMAC_SHA1 NATOA=none NATD=none DPD=none}

но сети друг друга не видят (ping, traceroute не ходят)

делал по http://www.opennet.ru/base/net/openswan_tunnel.txt.html

+

чето все молчат...вопросы по ipsec через *swan'ы всегда сложно разбирать. у меня несколько вопросов и предложений.
- покажите конфигурацию ipsec.conf с обоих сторон
- покажите правила iptables, также с обоих сторон
- между внешними адресами 10.X.Y.Z = 10.E.R.T , разрешен весь трафик?
- просьба, если делаете замену в адресах внешних серверов, используйте 1.1.1.1 и 2.2.2.2 цифры както привычней и восприимчевей)))

there is only war...

.

Более подробно опишу ситуацию:
Два сервера они же шлюзы:
a) Внутреняя подсеть 192.168.0.100/24
Внешний серый адрес провайдера 1.2.2.38/24 шлюз 1.2.2.3
Интернет через l2tp 8.5.94.12

б) Внутреняя подсеть 192.168.40.254/24
Внешний серый адрес провайдера 1.1.21.46/24 шлюз 1.1.21.3
Интернет через l2tp 7.22.6.4

Компьютеры друг друга видят (ping и различные tcp протоколы) 500 udp открыт проверял traceroute (как понимаю его достаточно)

На обоих конфиги openswan

ipsec.conf

version 2.0
config setup
klipsdebug=none
plutodebug=none
protostack=netkey
nat_traversal=no
conn d-s
left=1.1.21.46
leftsubnet=192.168.40.0/24
leftid=@d.local
leftrsasigkey=0sAQPz2LiI....
leftnexthop=1.1.21.3
right=1.2.2.38
rightsubnet=192.168.0.0/24
rightid=@s.local
rightrsasigkey=0sAQPZpjB.....
rightnexthop=1.2.2.3
auto=add

попозже правила iptables выложу

.

a) iptables

#!/bin/sh
I=/sbin/iptables

in_i=br0
in_o=ppp0

$I -P INPUT DROP
$I -P OUTPUT ACCEPT
$I -P FORWARD ACCEPT #включил для проверки

# REQUIRED
$I -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$I -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$I -A INPUT -i lo -j ACCEPT
$I -A INPUT -s 1.1.21.46 -j ACCEPT #открыт входящий трафик с сервера b

# public
$I -A INPUT -p icmp -j ACCEPT
$I -A INPUT -p tcp --syn --dport 21 -j ACCEPT

#ssh anti brut
$I -A INPUT -p tcp --syn --dport 22 -m recent --name ssh_brut --set
$I -A INPUT -p tcp --syn --dport 22 -m recent --name ssh_brut --update --seconds 300 --hitcount 3 -j DROP
$I -A INPUT -p tcp --syn --dport 22 -j ACCEPT

# private
$I -A INPUT -s 192.168.0.0/24 -p tcp --syn --dport 80 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p tcp --syn --dport 139 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p tcp --syn --dport 445 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p tcp --syn --dport 443 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p tcp --syn --dport 4747 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p udp --dport 67 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p udp --dport 68 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p udp --dport 137 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p udp --dport 138 -j ACCEPT
$I -A INPUT -s 192.168.0.0/24 -p udp --dport 475 -j ACCEPT

# forwards
$I -A FORWARD -i $in_i -p icmp -j ACCEPT
$I -A FORWARD -i $in_i -p udp --dport 53 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 53 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 21 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 22 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 23 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 4899 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 25 -m connlimit --connlimit-above 2 -j DROP
$I -A FORWARD -i $in_i -p tcp --syn --dport 25 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 80 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 110 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 143 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 443 -j ACCEPT
$I -A FORWARD -p tcp --syn --dport 3389 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 5190 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 1239 -j ACCEPT
$I -A FORWARD -i $in_i -p udp --dport 87 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 670 -j ACCEPT

$I -t nat -A PREROUTING -p tcp -d 8.5.94.12 --dport 3389 -j DNAT --to-destination 192.168.0.47
$I -t nat -A POSTROUTING -p tcp --dst 192.168.0.47 --dport 3389 -j SNAT --to-source 192.168.0.100
$I -t nat -A OUTPUT -p tcp -d 8.5.94.12 --dport 3389 -j DNAT --to-destination 192.168.0.47

$I -t nat -A PREROUTING -p tcp -d 1.2.2.38 --dport 3389 -j DNAT --to-destination 192.168.0.47
$I -t nat -A POSTROUTING -p tcp --dst 192.168.0.47 --dport 3389 -j SNAT --to-source 192.168.0.100
$I -t nat -A OUTPUT -p tcp -d 1.2.2.38 --dport 3389 -j DNAT --to-destination 192.168.0.47

$I -t nat -A POSTROUTING -s 192.168.0.0/24 -o $in_o ! -d 192.168.40.0/24 -j SNAT --to-source 8.5.94.12
$I -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 ! -d 192.168.40.0/24 -j SNAT --to-source 10.2.29.38

б) iptables

#!/bin/sh
I=/sbin/iptables

in_i=br0
in_o=ppp0
in_o1=eth1

$I -P INPUT DROP
$I -P OUTPUT ACCEPT
$I -P FORWARD ACCEPT #включил для проверки

# REQUIRED
$I -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$I -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$I -A INPUT -i lo -j ACCEPT
$I -A INPUT -s 1.2.2.38 -j ACCEPT #открыт входящий трафик с сервера a

# public
$I -A INPUT -p icmp -j ACCEPT
$I -A INPUT -p tcp --syn --dport 21 -j ACCEPT

#ssh anti brut
$I -A INPUT -p tcp --syn --dport 22 -m recent --name ssh_brut --set
$I -A INPUT -p tcp --syn --dport 22 -m recent --name ssh_brut --update --seconds 300 --hitcount 3 -j DROP
$I -A INPUT -p tcp --syn --dport 22 -j ACCEPT

$I -A INPUT -p tcp --syn --dport 443 -j ACCEPT

# private
$I -A INPUT -s 192.168.40.0/24 -p tcp --syn --dport 80 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p tcp --syn --dport 139 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p tcp --syn --dport 445 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p tcp --syn --dport 443 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p tcp --syn --dport 4747 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p tcp --syn --dport 5001 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p udp --dport 53 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p udp --dport 67 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p udp --dport 68 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p udp --dport 137 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p udp --dport 138 -j ACCEPT
$I -A INPUT -s 192.168.40.0/24 -p udp --dport 475 -j ACCEPT

# forwards
$I -A FORWARD -i $in_i -p icmp -j ACCEPT
$I -A FORWARD -i $in_i -p udp --dport 53 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 21 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 22 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 23 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 25 -m connlimit --connlimit-above 2 -j DROP
$I -A FORWARD -i $in_i -p tcp --syn --dport 25 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 80 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 110 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 143 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 443 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 3389 -j ACCEPT
$I -A FORWARD -i $in_i -p tcp --syn --dport 5190 -j ACCEPT
$I -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT

# nat

$I -t nat -A PREROUTING -p tcp -d 7.22.6.4 --dport 3389 -j DNAT --to-destination 192.168.40.20
$I -t nat -A POSTROUTING -p tcp --dst 192.168.40.20 --dport 3389 -j SNAT --to-source 192.168.40.254
$I -t nat -A OUTPUT -p tcp -d 7.22.6.4 --dport 3389 -j DNAT --to-destination 192.168.40.20

$I -t nat -A PREROUTING -p tcp -d 1.1.21.46 --dport 3389 -j DNAT --to-destination 192.168.40.20
$I -t nat -A POSTROUTING -p tcp --dst 192.168.40.20 --dport 3389 -j SNAT --to-source 192.168.40.254
$I -t nat -A OUTPUT -p tcp -d 1.1.21.46 --dport 3389 -j DNAT --to-destination 192.168.40.20

$I -t nat -A POSTROUTING -s 192.168.40.0/24 -o $in_o1 ! -d 192.168.0.0/24 -j SNAT --to-source 1.1.21.46
$I -t nat -A POSTROUTING -s 192.168.40.0/24 -o $in_o ! -d 192.168.0.0/24 -j SNAT --to-source 7.22.6.4

.

также нашел что в новых версиях не создаются интерфейсы ipsec*
можно ли их создать (с ними удобней управлять трафиком)

+

- я правильно понимаю что конфиги ipsec.conf на обоих машинах совершенно идентичные один в один?
- шлюзы могут достучаться друг до друга по внутрипровайдерским адресам 1.2.2.38 и 1.1.21.46 ? Если да то можете попробовать конфиги что я привел ниже.
- политику FORWARD на фаерволах, пока в процессе настройки держите в ACCEPT.
- по поводу ipsec0 см.ниже параметр в конфиге
- по ходу настройки постарайтесь не перегружать конфиг параметрами. и давайте пока без сертификатов, на обычных ключах. как заработает, там и сертификаты можно будет запилить

конфиг для 192.168.0.100

version 2.0

config setup
#тут укажите интерфейс подключеный к провайдеру, сам честно незнаю как ipsec работает с мостами
    interfaces="ipsec0=eth0"
    nat_traversal=yes
    virtual_private=%v4:192.168.0.0/24
    
conn %default
    authby=secret
    keylife=59m
    left=1.2.2.38
    auto=add

conn alfa
    leftsubnet=0.0.0.0/0
    right=1.1.21.46
    rightsubnet=192.168.40.0/24
    auto=start

конфиг для 192.168.40.254

version 2.0

config setup
#тут укажите интерфейс подключеный к провайдеру, сам честно незнаю как ipsec работает с мостами
    interfaces="ipsec0=eth0"
    nat_traversal=yes
    virtual_private=%v4:192.168.40.0/24
    
conn %default
    authby=secret
    keylife=59m
    left=1.1.21.46
    auto=add

conn alfa
    leftsubnet=0.0.0.0/0
    right=1.2.2.38
    rightsubnet=192.168.0.0/24
    auto=start

создайте файлик с паролем /etc/ipsec/ipsec.secrets
на 192.168.0.100
1.2.2.38 1.1.21.46 : PSK "blabla12"

на 192.168.40.254
1.1.21.46 1.2.2.38 : PSK "blabla12"

в фаервольных правилах разрешите udp порты 500 4500 и esp протокол
-A INPUT -p udp -m udp --sport 500 --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --sport 4500 --dport 4500 -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A OUTPUT -p udp -m udp --sport 500 --dport 500 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 4500 --dport 4500 -j ACCEPT
-A OUTPUT -p esp -j ACCEPT

затем перезапустите ipsec, и посмотрите ipsec auto --status alfa
будет круто увидеть IPsec SA established и ISAKMP SA established.

если все получится пойдем дальше...

there is only war...

не в тему, но спрошу - а

не в тему, но спрошу - а почему не ipsecctl , net-firewall/ipsec-tools ?, тем более road warrior не предвидится .
ip tunnel mode gre не устроит ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

+

swan поддерживают обе реализации ipsec , как netkey так и kame. ipsec-tools только kame.
ну а в netkey (open/free/strongSwan) сразу поддерживается nat-traversal , по этой причине с неё проще начинать.
swan'ы гибче в настройке и поддерживают больше сценариев применения.

вобще мое имхо такое что ipsec нужно использовать только тогда когда это действительно надо, а если нужно объединить сетки, то пойдет openvpn.

there is only war...

+1 o IPSec +1 k openVPN

+1 o IPSec
+1 k openVPN

а если нужно объединить

а если нужно объединить сетки, то пойдет openvpn.

Мое имхо в том , что достаточно ip tunnel mode ip ;)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".