настройка 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
конфиг для 192.168.40.254
создайте файлик с паролем /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
а если нужно объединить
Мое имхо в том , что достаточно 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 ;)