Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Muszę zestawić tunel ipsec pomiędzy hostami w jednej sieci. wcześniej nie miałem okazji bawić się takimi tunelami i nie chodzi o żadnego vpn'a. chcę poprostu mieć szyfrowane połączenie pomiędzy hostami.
zainstalowałem racoon'a skonfigurowałem go według kilku opisów z google i du...a. tunel mi nie wstaje, ogólnie nie działa :(
root@alix:/etc/racoon# cat racoon.conf # # NOTE: This file will not be used if you use racoon-tool(8) to manage your # IPsec connections. racoon-tool will process racoon-tool.conf(5) and # generate a configuration (/var/lib/racoon/racoon.conf) and use it, instead # of this file. # # Simple racoon.conf # # # Please look in /usr/share/doc/racoon/examples for # examples that come with the source. # # Please read racoon.conf(5) for details, and alsoread setkey(8). # # # Also read the Linux IPSEC Howto up at # http://www.ipsec-howto.org/t1.html # path pre_shared_key "/etc/racoon/psk.txt"; #path certificate "/etc/racoon/certs"; remote 172.21.7.57 { exchange_mode main; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key; dh_group modp1024; } } sainfo address 172.21.7.57 any address 172.21.7.15 any { pfs_group modp768; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; } root@alix:/etc/racoon# cat racoon-tool.conf # # Configuration file for racoon-tool # # See racoon-tool.conf(5) for details # # How to control the syslog level global: log: notify #peer(10.0.0.1): # verify_cert: on # passive: off # verify_identifier: off # lifetime: time 60 min # hash_algorithm[0]: sha1 # encryption_algorithm[0]: 3des ## my_identifier: fqdn backdoor.foo.bar ## peers_identifier: fqdn garden-path.foo.bar ## certificate_type: x509 bLaH.pem PrIv.pem root@alix:/etc/racoon# cat /etc/ipsec-tools.conf #!/usr/sbin/setkey -f # NOTE: Do not use this file if you use racoon with racoon-tool # utility. racoon-tool will setup SAs and SPDs automatically using # /etc/racoon/racoon-tool.conf configuration. # ## Flush the SAD and SPD # flush; spdflush; spdadd 172.21.7.15 172.21.7.57 any -P in ipsec esp/transport/require ah/transport//require; spdadd 172.21.7.57 172.21.7.15 any -P out ipsec esp/transport//require ah/transport//require; root@alix:/etc/racoon#
może ma ktoś jakieś małe krótkie how to, jak to poprawnie skonfigurować?
z góry wielkie dzięki.
Offline
Najlepiej byłoby, gdybyś zamieścił topologię sieci z adresami (nawet jeśli są to tylko dwa hosty) oraz pliki konfiguracyjne dwóch końców tunelu oraz logi. Z tego, co widzę, w konfiguracji mieszasz obydwa końce, np:
remote 172.21.7.57
...
sainfo address 172.21.7.57 any address 172.21.7.15 any
gdzie manual do racoon.conf określa:
sainfo (local_id | anonymous) (remote_id | clientaddr | anonymous) [from idtype [string]] [group string] { statements }[/quote]
Czyli pierwsze powinno być local_id a nie remote.
Łącząc tylko dwa hosty, bez podsieci powinieneś użyć trybu transportowego. Przykład takiej konfiguracji znajdziesz tu: [url]http://www.infond.fr/2010/04/basics-9-tutorial-ipsec-transport-mode.html[/url]Ostatnio edytowany przez jurgensen (2013-03-21 17:03:56)
Offline
Ja bym radził pociagnąć zamiast Racoona, Strongswana, na stronie Strongswana masz gotowe przepisy z obrazkami i konfigami ;)
Sznurek:
http://www.strongswan.org/testresults4.html
Ostatnio edytowany przez Jacekalex (2013-03-21 20:20:49)
Offline
[quote=jurgensen]Łącząc tylko dwa hosty, bez podsieci powinieneś użyć trybu transportowego. Przykład takiej konfiguracji znajdziesz tu: [url]http://www.infond.fr/2010/04/basics-9-tutorial-ipsec-transport-mode.html[/url][/quote]
Dzięki za zwrócenie uwagi. Rzeczywiście porąbałem strony, a ten link super. teraz działa :)
@Jacekalex, dzięki za sugestie, zapewne też tym się pobawię. swego czasu na strongswanie robiłem l2tp/ipsec ale to były dawne czasy, że aż nie prawda.
tak ogólnie, co jest lepsze, racoon czy strongswan?
Offline
Ja stawialem tylko Strongswana, raz nie mogłem z Racoonem dojść do ładu, nie chcial chodzić, Strongswana wg dokumentacji z wiki postawiłem w pół godziny i działał.
Chociaż osobiście, jak jest możliwość, to zazwyczaj proponuję OpenVPN, i tylko raz ktoś się uparł na Ipseca.
Zaletą było to, że Windowsy łyknęły wsio bez najmniejszego problemu i dodatkowego softu.
Robilem wg tego:
http://wiki.strongswan.org/projects/strongswan/wiki/Win7EapMultipleConfig
W każdym razie nie było to szczególnie trudne, sam się zdziwiłem, że tak lekko poszło.
Ostatnio edytowany przez Jacekalex (2013-03-21 21:33:20)
Offline
Witam ponownie.
Trochę się pobawiłem oboma rozwiazaniami. Z jednej strony strongswan jest "lepiej" udokumentowany w przykładach, z drugiej racoon+setkey wydaje się być łatwiejszy, aczkolwiek oba prowadzą do tego samego i chyba skłonie się do strongswana.
Chcę teraz połączyć odległe sieci w jedną. w obu lokalizacjach załóżmy że jest ta sama sieć 192.168.0.0/24, bramy połączone ipsec'iem. ze względu na brak możliwości przeadresowywania sieci w jednej lokalizacji będzie serwer dhcp, z którego hosty w drugiej lokalizacji będą pobierać adresy.
Chcę uzyskać coś w stylu bridge w OpenVPN, czyli cały ruch l2 ma "przechodzić" do drugiej lokalizacji łącznie z broadcastem i multicastem.
RGW1 RGW2 (sieć 192.168.0.0/24)---[eth1:192.168.0.1--eth0:1.2.3.4.5]===inet===[eth0:6.7.8.9--eth1:192.168.0.2]---(sieć 192.168.0.0/24)
chcę osiągnąć bridgea pomiędzy eth1 na RGW1 i eth1 RGW2 a nie mogę znaleźć exampla do tego rozwiązania :/
może ktoś podzieli się przykładem? z góry dzięki
Offline
leftsubnet=0.0.0.0/0
Wszystko powinno iść przez vpna po zestawieniu tunelu.
Choć ja bym robił różne podsieci na obu końcach tunelu, żeby sobie życia nie utrudniać.
Strongswan ma tą zaletę, ze lepiej radzi sobie z NAT po stronie klienta.
Choć np w sieciach 3g Ery lub Aero w ogóle nie dało się odpalić Ipseca, i trza było pogodzić się z OpenVPN.
Tak się skończyła przygoda mojego pacjenta z Ipseciem (na którego się uparł) :D
Po prostu słabość Ipseca polega na tym, że po obu stronach musisz mieć otwarte porty, routety muszą być "ipsec passtrought" i w ogóle w różnych dziwnych miejscach sieciowych (np hotspot) ciężko z nim dojść do ładu.
Za to OpenVPN chodzi jak każda usługa ssl, nie wymaga żadnych kombinacji z ustawieniami sieci i firewalla po stronie klienta,
i wymaga tylko jednego otwartego portu na serwerze.
Ostatnio edytowany przez Jacekalex (2013-03-22 21:09:03)
Offline
[quote=Jacekalex]
leftsubnet=0.0.0.0/0
Wszystko powinno iść przez vpna po zestawieniu tunelu.[/quote]
hmm, L3 tak, a L2 i multicast?
[quote=Jacekalex]Za to OpenVPN chodzi jak każda usługa ssl, nie wymaga żadnych kombinacji z ustawieniami sieci i firewalla po stronie klienta,
i wymaga tylko jednego otwartego portu na serwerze.[/quote]
Gdyby jeszcze nie ograniczenie interfejsu do 10M to byłaby to rewelacja.
Offline
[quote=Nicram][quote=Jacekalex].....[/quote]
Gdyby jeszcze nie [b]ograniczenie interfejsu do 10M[/b] to byłaby to rewelacja.[/quote]
Co prawda, dawno nie testowałem, ale:
bandwidth 100000000 - Sets the interface to 100Mbps
Znalezione w tym tutku:
http://jacekalex.sh.dug.net.pl/OpenVPN.pdf
Ostatnio edytowany przez Jacekalex (2013-03-22 21:37:44)
Offline
IPsec nie obsługuje bezpośrednio połączeń w warstwie 2. Na OpenBSD zrealizowałem to, tworząc wirtualne interfejsy gif na zewnętrznych adresach. Na nich zestawiłem IPSec w trybie transportowym z opcją etherip. Później zrobiłem bridge między interfejsem gif oraz interfejsem zewnętrznym i miałem połączenie w warstwie 2.
ps. jeśli masz niewielką przepustowość łącza i duży ruch w sieci, broadcasty mogą je całe zapchać.
Ostatnio edytowany przez jurgensen (2013-03-22 21:40:22)
Offline
[quote=Jacekalex]
bandwidth 100000000 - Sets the interface to 100Mbps
Znalezione w tym tutku:
http://jacekalex.sh.dug.net.pl/OpenVPN.pdf[/quote]
niestety:
Mar 22 21:44:45 pat ovpn-server[4105]: Options error: Unrecognized option or missing parameter(s) in /etc/openvpn/server.conf:319: bandwidth (2.1_rc11)
___
[quote=jurgensen]IPsec nie obsługuje bezpośrednio połączeń w warstwie 2. Na OpenBSD zrealizowałem to, tworząc wirtualne interfejsy gif na zewnętrznych adresach. Na nich zestawiłem IPSec w trybie transportowym z opcją etherip. Później zrobiłem bridge między interfejsem gif oraz interfejsem zewnętrznym i miałem połączenie w warstwie 2.
ps. jeśli masz niewielką przepustowość łącza i duży ruch w sieci, broadcasty mogą je całe zapchać.[/quote]
broadcastu akurat się nie obawiam, wszytko to, to do własnych testów wielu wariantów.
Nie za bardzo rozumiem o tych wirtualnych interfejsach "gif" :/, jak się to ma do debiana, czy w debianie nie jest to np. eth0:0?. czy czasem nie zrobiłeś bridge między interfejsem gif i inerfejsem wewnętrznym? bo skoro gif od początku przypięty do zewnętrznego to po co później go bridgeować do tego samego interfejsu?
Jeśli dobrze myślę, i utworzę interfejs wirtualny na interfejsie zewnętrznym to muszę im przyznać jakieś adresy? jakie, jak zewnętrzny routing jest "mocno ograniczony"? jak w takim case zestawić ipseca?
w openswan mam opcje interfaces:
config setup interfaces="ipsec0=eth0"
ale mimo podniesienia tunelu "ip a" nie pokazuje mi interfejsu ipsec0 co by można było go zbridgeować do lokalnego ethernetu. w manie ipsec.conf nie mogę znaleźć opcji "etherip"
Ostatnio edytowany przez Nicram (2013-03-22 22:14:20)
Offline
gif to wirtualny interfejs, wykorzystywany do tuneli (podobny, do znanego m.in. z Cicsco gre - różni się tylko enkapsulacją danych). Tunel można zestawić bez IPSeca, właśnie przy użyciu tych interfejsów. Na istniejącym już tunelu konfigurowałem IPSec dla zachowania integralności danych i szyfrowania. Interfejs gif korzysta z zewnętrznego interfejsu do zestawienia tunelu, natomiast zbridgowany jest z wewnętrznym interfejsem, aby właśnie połączyć sieć wewnętrzną z tunelem, który na drugim końcu również jest zbridgowany z siecią wewnętrzną. Wszystko może obyć się oczywiście bez IPSeca. Służy on wyłącznie do szyfrowania. Jeśli będziesz chciał, mogę odgrzebać działającą konfigurację i wrzucić tu (dla OpenBSD, nie Debiana).
Offline
Z tego, co widzę, po podniesieniu interfejsu tap domyślna prędkość tapX wynosi 10m.
Na forum openvpn piszą, ze jak interfejs tap ruszy z inną prędkością, to openvpn powinien to załapać.
Ale nie mam w tej chwili pomysłu, jak ustawić 100 lub 1000M na tapX.
ethtool nie ogarnia tego interfejsu, w modinfo tun też nic ciekawego nie widziałem.
Offline
[quote=Jacekalex]Z tego, co widzę, po podniesieniu interfejsu tap domyślna prędkość tapX wynosi 10m.
Na forum openvpn piszą, ze jak interfejs tap ruszy z inną prędkością, to openvpn powinien to załapać.
Ale nie mam w tej chwili pomysłu, jak ustawić 100 lub 1000M na tapX.
ethtool nie ogarnia tego interfejsu, w modinfo tun też nic ciekawego nie widziałem.[/quote]
tap jest do L3 (co nie zmienia faktu jego prędkości 10M), do L2 używam tun. Gdyby w openvpn były "normalne" prędkości do bym nie kombinował dla moich 3 rw, z których jeden to ja :)
[quote=jurgensen]gif to wirtualny interfejs, wykorzystywany do tuneli (podobny, do znanego m.in. z Cicsco gre - różni się tylko enkapsulacją danych). Tunel można zestawić bez IPSeca, właśnie przy użyciu tych interfejsów. Na istniejącym już tunelu konfigurowałem IPSec dla zachowania integralności danych i szyfrowania. Interfejs gif korzysta z zewnętrznego interfejsu do zestawienia tunelu, natomiast zbridgowany jest z wewnętrznym interfejsem, aby właśnie połączyć sieć wewnętrzną z tunelem, który na drugim końcu również jest zbridgowany z siecią wewnętrzną. Wszystko może obyć się oczywiście bez IPSeca. Służy on wyłącznie do szyfrowania. Jeśli będziesz chciał, mogę odgrzebać działającą konfigurację i wrzucić tu (dla OpenBSD, nie Debiana).[/quote]
Dzięki, już nie co kumam. Nie chciałbym nadwyrężać Twojej dobrej woli żebyś szukał tej konfiguracji, ale jak znajdziesz chwilkę i odrobinę chęci, to fajnie byłoby to zobaczyć. Może coś by się wykombinowało pod debiana.
Ostatnio edytowany przez Nicram (2013-03-22 22:30:52)
Offline
[url]http://i45.tinypic.com/10mj1o6.png[/url] Na obrazku zamieściłem schemat sieci z przykładu (gdyby coś było niejasne, daj proszę znać).
Interfejsy zewnętrzne na routerach to em0. Interfejsy wewnętrzne to em1. Są jeszcze wirtualne interfejsy gif0 oraz bridge0. Na interfejsach wewnętrznych po obu stronach jest ta sama sieć -192.168.0.0/24 - domena rozgłoszeniowa rozciągnęła się na dwie lokacje poprzez tunel.
[b]Router R1[/b] - konfiguracja interfejsów
hostname.em0 inet 10.0.0.2 255.255.255.0 ----------------------------------------- hostname.em1 inet 192.168.0.1 255.255.255.0 ----------------------------------------- hostname.gif0 tunnel 10.0.0.2 10.1.0.2 ----------------------------------------- hostname.bridge0 add em1 add gif0 up
[b]Router R2[/b] - konfiguracja interfejsów
hostname.em0 inet 10.1.0.2 255.255.255.0 ----------------------------------------- hostname.em1 inet 192.168.0.100 255.255.255.0 ----------------------------------------- hostname.gif0 tunnel 10.1.0.2 10.0.0.2 ----------------------------------------- hostname.bridge0 add em1 add gif0 up
Na koniec konfiguracja IPSeca, który ochroni nas przed podsłuchem na ruterach pomiędzy R1 a R2:
Ipsec na [b]R1[/b]:
ike esp transport from 10.0.0.2 to 10.1.0.2 psk TajneHaslo flow esp proto etherip from 10.0.0.2 to 10.1.0.2
Ipsec na [b]R2[/b]:
ike esp transport from 10.1.0.2 to 10.0.0.2 psk TajneHaslo flow esp proto etherip from 10.1.0.2 to 10.0.0.2
W razie dodatkowych pytań, daj znać.
Ostatnio edytowany przez jurgensen (2013-03-23 00:10:39)
Offline
Dzięki @jurgensen, zasada jest jasna i właśnie takie coś chcę osiągnąć. teraz kwestia tego tunelu. jak wcześniej wspomniałeś gif to interfejs tunelujący podobny do gre, z tym, że podobny to nie identyczny :) jaki odpowiednik tego tunelu będzie w linuxie/debianie? czyżby ipip? bo reszta jest jasna
Offline
gif to właściwie to samo, co gre, różni się jedynie sposobem enkapsulacji danych. Wydaje mi się, że na gre powinno to również działać, ale nie jestem na 100% pewien.
Offline
[quote=jurgensen]gif to właściwie to samo, co gre, różni się jedynie sposobem enkapsulacji danych. Wydaje mi się, że na gre powinno to również działać, ale nie jestem na 100% pewien.[/quote]
właśnie sprawdziłem. nie mogę dodać interfejsu tunelowego do bridgea :/
ip tunnel add tunel0 mode gre remote 10.21.7.15 local 10.21.7.57 ip link set up dev tunel0 ... ~#brctl addbr br0 ~#brctl addif br0 tunel0 can't add tunel0 to bridge br0: Invalid argument
jakieś sugestie?
-------------
gretap
Ostatnio edytowany przez Nicram (2013-03-23 15:01:15)
Offline
Za bardzo nie wiem, jak to zrobić pod Debianem. W tym [url]http://www.vyatta.org/node/970[/url] sugerują wykorzystanie L2TPv3.
Offline
zrobiłem to tak i działa :)
Host A:
ip link add gretap0 type gretap local 172.31.0.1 remote 172.31.0.2 ip link set dev gretap0 up ip link set dev eth1 up brctl addbr br0 brctl addif br0 gretap0 brctl addif br0 eth1 ip addr add 10.10.10.1/24 dev br0 ip link set br0 up
Host B:
ip link add gretap0 type gretap local 172.31.0.2 remote 172.31.0.1 ip link set dev gretap0 up ip link set dev eth1 up brctl addbr br0 brctl addif br0 gretap0 brctl addif br0 eth1 ip addr add 10.10.10.2/24 dev br0 ip link set br0 up
dodatkowo między hostami 172.31.0.2 i 172.31.0.1 ustawiłem ipseca i działa. podsłuchując tcpdumpem na br0 i próbując pingować coś z sieci br0 widzę zapytania arp więc L2 działa :)
słuchając na interfejsach zewnętrznych (172.31.0.1) widzę ruch szyfrowany ESP :) jednym słowem super.
dzięki za sugestie
Offline
Time (s) | Query |
---|---|
0.00016 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00141 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.117.154.134' WHERE u.id=1 |
0.00125 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.117.154.134', 1732745092) |
0.00068 | SELECT * FROM punbb_online WHERE logged<1732744792 |
0.00078 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=23189 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00370 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=23189 ORDER BY p.id LIMIT 0,25 |
0.00143 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23189 |
Total query time: 0.00954 s |