Présentations pour cette session
SEdesign
ensemble des fichiers de ce thème
XFEST2014
Voici les 3 thèmes abordés lors de ce séminaires:
Design essentials
Techniques & Applications
Zynq-7000 all programmable soc intelligent drives
SEConferences
Vpn
[wiki: Accéder au réseau interne du LLR depuis l’extérieur]
—-
== Attention: Page en construction, besoin d’être mise à jour
Objectif
Au labo, il n’y a pas encore de VPN (Virtual Private Network) qui permettrait aux utilisateurs distants de faire partie du réseau comme si ils étaient physiquement au LLR, alors qu’ils sont au CERN ou ailleurs. Cependant, il est quand même possible de mettre en place des tunnels chiffrés (ie cryptés) permettant, entre autres, d’accéder au serveur web interne (polynet) depuis l’extérieur, moyennant une petite étape de configuration. La solution que nous illustrons ici repose sur la fonctionnalité de « relai de port » (port forwarding) de ssh.
Vous pouvez par ailleurs utiliser le serveur de courrier LLR depuis l’extérieur pour envoyer des mails.
—-
Serveur de courrier sortant (POLSMTP)
Le serveur de courrier du LLR est désormais capable de relayer l’envoi de messages depuis l’extérieur du laboratoire. Configuration de votre serveur smtp sortant :
- Serveur : polsmtp.in2p3.fr
- Port: 465
- Username:
- Methode d’authentification: password normal
- Connexion security: SSL/TLS
—-
Utilisation de tunnels SSH pour accéder au réseau interne du LLR (SSH sur Unix et Windows, et FTP)
On essaye d’avoir ce type de configuration :
chez_moi --[ssh/internet]--> polui --[réseau local LLR]--> machine_interne
Machine à privilégier : polui01.in2p3.fr.
Principe général
Lorsque vous ouvrez une connexion SSH vers polui01.in2p3.fr, vous pouvez en profiter pour rediriger certains ports de votre machine locale (localhost) vers des ports des machines du LLR,
et utilisez ainsi indirectement certains services qui sont en principe réservés aux personnes directement reliées au réseau interne. Quelques exemples typiques :
- accès à l’intranet : localhost:8080 => polynet:80
- envoi de courriel : localhost:25 => polsmtp:25
- utilisation de licenses : local:5296 => ccflex04:5296
Pour beneficier de ces tunnels, il faut reconfigurer vos applications clientes pour utiliser le port de la machine locale au lieu de la machine et du port habituel.
En reprenant les exemples ci-dessus :
- Pour naviguer sur l’intranet, rendez vous sur l’adresse `http://localhost:8080`.
- Pour envoyer du courrier, reconfigurer Thunderbird pour qu’il utilise comme serveur sortant `localhost:25`.
- Pour utiliser une license de `ccflex04`, définissez `LM_LICENSE_FILE` comme `5296@localhost`.
Configuration Linux/MacOS
Mise en place
Avec cette méthode, on pourra par exemple choisir de n’accéder au’au port 80 de polynet (intranet), ou au port 25 de polsmtp (envoi de mails), ou les deux. Mais l’accès à chaque port nécessitera une configuration explicite.
La manipulation suivante est à faire une seule fois, le port forwarding sera ensuite mis en place systématiquement à chaque fois que vous serez connecté en ssh.
Imaginons que, pour vous connecter en tant que monlogin depuis votre machine chez_moi à l’extérieur du LLR, sur la machine_llr au LLR, vous fassiez d’habitude :
chez_moi> ssh monlogin@machine_llr.in2p3.fr
....
Il va suffire de rajouter le nécessaire pour dire à ssh : « quand je me connecte sur le port 8800 (par exemple) sur ma machine (chez_moi), je veux que ça me créé un tunnel jusqu’au port 80 de polynet ».
Pour cela, il suffit de créer ou de modifier le fichier de configuration $HOME/.ssh/config sur la machine chez_moi. Si le répertoire $HOME/.ssh n’existe pas, le créer, idem pour le fichier $HOME/.ssh/config. Ce fichier doit contenir une entrée du type :
Host llr
Hostname machine_llr.in2p3.fr
User monlogin
LocalForward 8800 polynet:80
Si plusieurs ports sont à rediriger, il suffit de rajouter les LocalForward? qui vont bien.
- Dans `$HOME/.ssh/config` :
Host polui01
Hostname polui01.in2p3.fr
User <monlogin>
LocalForward 8800 polynet:80
LocalForward 25 polsmtp:25
LocalForward 5296 ccflex04:25
Il est également possible de faire la même chose en ligne de commande, sans modifier la configuration :
shell> ssh -L 8800:polynet:80 monlogin@machine_llr.in2p3.fr
...
Utilisation
Il suffit maintenant de faire :
chez_moi> ssh llr
....
Cette étape fera 2 choses :
- elle lancera une session ssh normale sur machine_llr
- elle prendra en charge les tunnels sur le port 8800 de la machine chez_moi vers le port 80 de polynet au LLR
Donc, pour profiter de ce tunnel, il suffit alors de faire pointer son browser préféré sur l’adresse http://localhost:8800/ et hop, c’est comme si on était au LLR et qu’on se connectait sur http://polynet/.
Remarques
Bien sûr le tunnel ne fonctionne qu’à destination du port 80 de polynet. Cela veut dire que si des liens dans les pages du web interne partent sur d’autres machines internes, vous n’y aurez pas accès, à moins de modifier votre ~/.ssh/config pour rajouter d’autres tunnels vers ces machines. Dans le même ordre d’idées, il est possible que sur polynet, certains liens vers des pages de polynet soient écrits de manière dite absolue (pex : http://poltynet/index.html), plutôt que de manière dite relatifve (pex : /index.html), dans ce cas vous n’aurez pas accès non plus à ces pages : il vous faudra réécrire à la main l’URL qui apparaît en haut du browser, et remplacer le polynet (de http://polynet/index.html par exemple) par localhost:8800 (ce qui donnerait en l’occurence http://localhost:8800/index.html). Nous signaler tout lien embêtant de ce type (mail à support-info).
A noter que dès que vous terminez la session ssh (exit), le tunnel chez_moi => polynet:80 n’existe plus !
A noter enfin que si, pendant qu’une session ssh est ouverte sur machine_llr, vous en ouvrez une autre, le port 8800 n’est plus disponible pour la 2ème session puisqu’il est utilisé par la première, et donc au lancement de la 2ème session, vous aurez un message (pas grave) du type :
[pollindd] ~ >ssh llr
Enter passphrase for key '/home/ddecotig/.ssh/id_rsa':
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 8800
Could not request local forwarding.
Last login: Tue Mar 2 14:55:36 2004 from pollindd.in2p3.fr
[ddecotig@polui01 ddecotig]$
Ainsi, le tunnel ne peut être établi à nouveau vu qu’il existe déjà par l’entremise de la première session, mais les deux sessions ssh fonctionnent comme d’habitude quand même.
Application utile : ssh sur une machine interne au LLR (« rebond »)
Imaginons que je veuille régulièrement me loguer en ssh sur polcaldaq, qui est une machine interne au LLR inaccessible depuis l’extérieur. Une solution est :
moi@mon_laptop> ssh mon_login_polui01@polui01.in2p3.fr
moi@polui01> ssh mon_login_polcaldaq@polcaldaq
moi@polcaldaq> uname -n
polcaldaq
Mais ça nécessite de passer par 2 étapes de login.
Or on aimerait bien par exemple faire :
moi@mon_laptop> ssh llr_polcaldaq
moi@polcaldaq> uname -n
polcaldaq
C’est possible ! Il suffit de modifier son fichier ~/.ssh/config pour avoir une section comparable à :
Host llr_polcaldaq
User mon_login_polcaldaq
ProxyCommand ssh mon_login_polui01@polui01.in2p3.fr exec /usr/bin/nc %h %p
Avec des clefs publiques bien configurées, on peut alors se loguer sur polcaldaq sans avoir à taper 50 fois son mot de passe.
Note : c’est possible avec putty aussi sous Windows, mais il faut avoir mis en place un système de clefs avec mot de passe vide pour polui01.
Application utile: faire du ssh sans taper le mot de passe
Pour eviter de taper moulte fois le password pour faire du ssh entre 2 machines, on peut abreger en diffusant les clés ssh publique
[tugler@poldhcp66 .ssh]$ pwd
/home/tugler/.ssh
[tugler@poldhcp66 .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tugler/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tugler/.ssh/id_rsa.
Your public key has been saved in /home/tugler/.ssh/id_rsa.pub.
The key fingerprint is:
53:ba:69:91:f9:9e:1c:d3:49:c8:8e:1b:10:e5:fd:49 tugler@poldhcp66
[tugler@poldhcp66 .ssh]$ ll
total 80
-rw------- 1 tugler tugler 1675 18 nov. 10:19 id_rsa
-rw-r--r-- 1 tugler tugler 398 18 nov. 10:19 id_rsa.pub
-rw-r--r-- 1 tugler tugler 67827 8 nov. 11:28 known_hosts
[tugler@poldhcp66 .ssh]$ cat id_rsa.pub | ssh tugler@polui01 "cat - >>.ssh/authorized_keys"
tugler@polui01's password:
[tugler@poldhcp66 .ssh]$ ssh polui01
Last login: Wed Nov 13 15:50:16 2013 from poldhcp66.in2p3.fr
-bash-4.1$
Configuration Windows
- Installer un outil permettant d’ouvrir des connexions SSH, par exemple Putty ou SSH Secure Shell.
- Dans la configuration de cet outil, et pus particulièrement dans le profil attaché à polui01, ajoutez vos tunnels. Par exemple, avec putty, pour l’intranet :
| Display Name | comme vous voulez |
| Type | TCP |
| Listen Port | 8800 |
| Allow local connections only | coché |
| Destination Host | polynet |
| Destination Port | 80 |
Pour déclarer une session avec un tunnel vers le web interne, faire par exemple :
- rubrique « Session », taper le nom de machine_llr dans la boîte « Host name », le port reste 22, puis taper le nom que vous souhaitez donner à cette session (par exemple « llr ») dans la boîte « Saved Sessions »
- passez à la rubrique Connection/SSH/Tunnels et remplissez les boîtes « Source Port » et « Destination » en bas de la fenêtre avec respectivement 8800 et polynet:80, comme dans la copie d’écran suivante :
[[Image(wiki:Vpn:puttyfport.jpg)]]
Puis cliquer sur Add
Attention : il y a un « deux-points » entre polynet et 80.
- repasser à la rubrique « Session », puis cliquer sur « Save »
Et voilà, pour établir la session ssh avec le tunnel vers polynet activé, il suffira par la suite de double-cliquer sur le nom de la session que vous avez créée précédemment, puis de faire apparaître l’URL http://localhost:8800/ dans son browser web préféré.
Windows : Secure Shell
Il existe aussi un autre client ssh graphique répandu sous windows : « SSH Secure Shell » (http://www.ssh.com/support/downloads/secureshellwks/non-commercial.html).
Le plus simple est de définir un nouveau profil, ou de modifier celui que vous utilisez habituellement pour vous connecter au LLR.
Se créer un profil
- menu File, puis « Profiles », puis « Add profile », donnez le nom que vous voulez
- remplir les champs « Host Name » et « User Name » de l’onglet « Connection »
- cliquer sur « Ok »
[[Image(wiki:Vpn:sshpolynet.jpg)]]
Configurer le tunnel ssh dans un profil
- menu File, puis « Profiles », puis « Edit profile », cliquer sur le profile dans lequel vous souhaitez rajouter le tunnel (partie gauche de la fenêtre).
- onglet « Tunneling », cliquer sur « Add » puis positionner les champs comme au dessus.
- Cliquer sur OK.
[[Image(wiki:Vpn:sshtunnel.jpg)]]
Et voilà, pour établir la session ssh avec le tunnel vers polynet activé, il suffira par la suite de cliquer sur le nom du profil que vous avez créé précédemment (il y a 3 barres de menu, il faut aller dans le menu « profiles » de la 3ème), puis de faire apparaître l’URL http://localhost:8800/ dans son browser web préféré.
Et pour accéder au FTP de polynet ?
Les URLs vers le ftp de polynet sur le site web interne ne passeront pas par le tunnel. Il faudra utiliser le lien vers le contenu du ftp à la racine du site web : /ftp. Pour récupérer fsecure par exemple, on utilisera l’URL http://localhost:8800/ftp/pub/antivirus/fsecure/fsecure540.zip en lieu et place de l’URL originale ftp://polynet.in2p3.fr/pub/antivirus/fsecure/fsecure540.zip.
SETuto
InterTrac
InterTrac Links
Trac supports a convenient way to refer to resources of other Trac servers, from within the Wiki markup, since version 0.10.
Definitions
An InterTrac link can be seen as a scoped TracLinks.
It is used for referring to a Trac resource
(Wiki page, changeset, ticket, …) located in another
Trac environment.
List of Active InterTrac Prefixes
Link Syntax
Simply use the name of the other Trac environment as a prefix,
followed by a colon, ending with the resource located in the other environment.
<target_environment>:<TracLinks>
The other resource is specified using a regular TracLinks, of any flavor.
That target environment name is either the real name of the
environment, or an alias for it.
The aliases are defined in `trac.ini` (see below).
The prefix is case insensitive.
If the InterTrac link is enclosed in square brackets (like `[th:WikiExtrasPlugin]`), the InterTrac prefix is removed in the displayed link, like a normal link resolver would be (i.e. the above would be displayed as `WikiExtrasPlugin`).
For convenience, there’s also some alternative short-hand form,
where one can use an alias as an immediate prefix
for the identifier of a ticket, changeset or report:
(e.g. `#T234`, `[T1508]`, `[trac 1508]`, …)
Examples
It is necessary to setup a configuration for the InterTrac facility.
This configuration has to be done in the TracIni file, `[intertrac]` section.
Example configuration:
...
[intertrac]
# -- Example of setting up an alias:
t = trac
# -- Link to an external Trac:
trac.title = Edgewall's Trac for Trac
trac.url = http://trac.edgewall.org
The `.url` is mandatory and is used for locating the other Trac.
This can be a relative URL in case that Trac environment is located
on the same server.
The `.title` information will be used for providing an useful tooltip
when moving the cursor over an InterTrac links.
Finally, the `.compat` option can be used to activate or disable
a compatibility mode:
- If the targeted Trac is running a version below [trac:milestone:0.10 0.10]
([trac:r3526 r3526] to be precise), then it doesn’t know how to dispatch an InterTrac
link, and it’s up to the local Trac to prepare the correct link.
Not all links will work that way, but the most common do.
This is called the compatibility mode, and is `true` by default.
- If you know that the remote Trac knows how to dispatch InterTrac links,
you can explicitly disable this compatibility mode and then any
TracLinks can become an InterTrac link.
Now, given the above configuration, one could create the following links:
- to this InterTrac page:
- `trac:wiki:InterTrac` trac:wiki:InterTrac
- `t:wiki:InterTrac` t:wiki:InterTrac
- Keys are case insensitive: `T:wiki:InterTrac` T:wiki:InterTrac
- to the ticket #234:
- `trac:ticket:234` trac:ticket:234
- `trac:#234` trac:#234
- `#T234` #T234
- to the changeset [1912]:
- `trac:changeset:1912` trac:changeset:1912
- `[T1912]` [T1912]
- to the log range [3300:3330]: (Note: the following ones need `trac.compat=false`)
- `trac:log:@3300:3330` trac:log:@3300:3330
- `[trac 3300:3330]` [trac 3300:3330]
- finally, to link to the start page of a remote trac, simply use its prefix followed by ‘:’, inside an explicit link. Example: `[th: Trac Hacks]` (since 0.11; note that the remote Trac has to run 0.11 for this to work)
The generic form `intertrac_prefix:module:id` is translated
to the corresponding URL `
are specific to some modules (e.g. !#T234 is processed by the
ticket module) and for the rest (`intertrac_prefix:something`),
we rely on the TracSearch#quickjump facility of the remote Trac.
—-
See also: TracLinks, InterWiki
PageTemplates
Wiki Page Templates
(since 0.11)
The default content for a new wiki page can be chosen from a list of page templates.
That list is generated from all the wiki pages having a name starting with PageTemplates/.
The initial content of a new page will simply be the content of the chosen template page, or a blank page if the special (blank page) entry is selected. When there are no wiki pages with the PageTemplates/ prefix, the initial content will always be the blank page and the list selector will not be shown (i.e. this matches the behavior we had up to now).
To create a new template, simply create a new page having a name starting with PageTemplates/.
(Hint: one could even create a !PageTemplates/Template for facilitating the creation of new templates!)
After the first template has been created, a drop-down selection box will automatically appear on any new wiki pages that are created. By default it is located on the right side of the ‘Create this page’ button. The default selection will be blank page, or !DefaultPage if !PageTemplates/DefaultPage exists.
Available templates:
[[TitleIndex(PageTemplates/)]]
—-
See also: TracWiki
TitleIndex
Index by Title | [RecentChanges Index by Date]
[[TitleIndex(format=group,min=4)]]
RecentChanges
[TitleIndex Index by Title] | Index by Date