# TP3 : Progressons vers le réseau d'infrastructure
## I. (mini)Architecture réseau
| Nom du réseau | Adresse du réseau | Masque | Nombre de clients possibles | Adresse passerelle | [Adresse broadcast](../../cours/lexique/README.md#adresse-de-diffusion-ou-broadcast-address) |
|---------------|-------------------|---------------|-----------------------------|--------------------|----------------------------------------------------------------------------------------------|
| `client1` | `10.3.0.128` | `255.255.255.192` | 62| `10.3.0.190` | `10.3.0.191` |
| `server1` | `10.3.0.0` | `255.255.255.128` | 126 | `10.3.0.126` | `10.3.0.127` |
| `server2` | `10.3.0.192` | `255.255.255.240` | 14 | `10.3.0.206` | `10.3.0.207`|
Informations du routeur :
Ip :
```
[adrien@router ~]$ ip a
[...]
3: enp0s8: [...]
inet 10.3.0.190/26 brd 10.3.0.191 scope global noprefixroute enp0s8
[...]
4: enp0s9: [...]
inet 10.3.0.126/25 brd 10.3.0.127 scope global noprefixroute enp0s9
[...]
5: enp0s10: [...]
inet 10.3.0.206/28 brd 10.3.0.207 scope global noprefixroute enp0s10
[...]
```
Acces a internet et résolution de nom :
```
[adrien@router ~]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=20.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=19.2 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=17.10 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 17.955/19.125/20.230/0.929 ms
[adrien@router ~]$ dig google.com
; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29133
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 281 IN A 142.250.178.142
;; Query time: 16 msec
;; SERVER: 10.33.10.2#53(10.33.10.2)
;; WHEN: Mon Sep 27 12:28:44 CEST 2021
;; MSG SIZE rcvd: 55
```
Nom :
```
[adrien@router ~]$ hostname
router.tp3
```
Activation du routage :
```
[adrien@router ~]$ sudo firewall-cmd --add-masquerade --zone=public --permanent
success
```
| Nom machine | Adresse IP `client1` | Adresse IP `server1` | Adresse IP `server2` | Adresse de passerelle |
|--------------|----------------------|----------------------|----------------------|-----------------------|
| `router.tp3` | `10.3.0.190/26` | `10.3.0.126/25` | `10.3.0.206/28` | Carte NAT |
## II. Services d'infra
### 1. Serveur DHCP
La conf du serveur dhcp est dans dhcpd.conf
Marcel :
Il a une ip dynamique
```
[adrien@marcel ~]$ ip a
[...]
2: enp0s8: [...]
inet 10.3.0.131/26 brd 10.3.0.191 scope global dynamic enp0s8
valid_lft 804sec preferred_lft 804sec
```
"10.3.0.131/26 brd 10.3.0.191 scope global **dynamic**"
Et il a accés a internet et un serveur dns avec des infos récupérées par le DHCP
```
[adrien@marcel ~]$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s8
UUID=1a3a72a0-92d6-4bd0-bf49-afea13bf8877
DEVICE=enp0s8
ONBOOT=yes
[adrien@marcel ~]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=113 time=21.7 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=113 time=21.2 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=113 time=21.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=113 time=21.0 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 21.048/21.394/21.721/0.329 ms
[adrien@marcel ~]$ dig google.com
; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22502
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 134 IN A 142.250.74.238
;; Query time: 20 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Thu Sep 30 10:33:11 CEST 2021
;; MSG SIZE rcvd: 55
```
marcel.client1.tp3 passe par router.tp3 pour sortir de son réseau
```
traceroute to google.com (142.250.179.110), 30 hops max, 60 byte packets
1 _gateway (10.3.0.190) 2.496 ms 2.305 ms 2.246 ms
2 10.0.2.2 (10.0.2.2) 2.122 ms 1.921 ms 1.875 ms
```
**_gateway (10.3.0.190)** montre qu'il passe par une gateway, qui est router.tp3, qu'on reconnait grace a son ip
| Nom machine | Adresse IP `client1` | Adresse IP `server1` | Adresse IP `server2` | Adresse de passerelle |
|--------------|----------------------|----------------------|----------------------|-----------------------|
| `router.tp3` | `10.3.0.190/26` | `10.3.0.126/25` | `10.3.0.206/28` | Carte NAT
| `dhcp.client1.tp3` | `10.3.0.130/26` | | | `10.3.0.190/26` |
| `marcel.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
### 2. Serveur DNS
#### B. SETUP copain
Nom de dns1 ainsi que son ip dans le réseau server1 :
```
[adrien@dns1 ~]$ hostname
dns1.server1.tp3
[adrien@dns1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:ef:0e:f4 brd ff:ff:ff:ff:ff:ff
inet 10.3.0.2/25 brd 10.3.0.127 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:feef:ef4/64 scope link
valid_lft forever preferred_lft forever
```
La config de la carte réseau
```
[adrien@dns1 ~]$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
BOOTPROTO=static
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes
NETMASK=255.255.255.128
IPADDR=10.3.0.2
GATEWAY=10.3.0.126
DNS1=1.1.1.1
```
Install de bind
```
[adrien@dns1 ~]$dnf install -y bind bind-utils
```
Fichier named.conf
```
[adrien@dns1 ~]$ sudo cat /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
recursion yes;
allow-query { 10.3.0.0/25; 10.3.0.128/26; 10.3.0.192/28; };
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "server1.tp3" {
type master;
file "/etc/bind/zones/server1.tp3.forward";
allow-query { 10.3.0.0/25; 10.3.0.128/26; 10.3.0.192/28; };
};
zone "server2.tp3" {
type master;
file "/etc/bind/zones/server2.tp3.forward";
allow-query { 10.3.0.0/25; 10.3.0.128/26; 10.3.0.192/28; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
```
Fichier server1.tp3.forward
```
[adrien@dns1 ~]$ sudo cat /etc/bind/zones/server1.tp3.forward
$TTL 86400
@ IN SOA dns1.server1.tp3. root.server1.tp3. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Minimum
@ IN NS dns1.server1.tp3.
dns1 IN A 10.3.0.2
router IN A 10.3.0.126
```
Fichier server2.tp3.forward
```
[adrien@dns1 ~]$ sudo cat /etc/bind/zones/server2.tp3.forward
$TTL 86400
@ IN SOA dns1.server2.tp3. root.server2.tp3. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Minimum;
@ IN NS dns1.server2.tp3.
dns1 IN A 10.3.0.2
router IN A 10.3.0.206
```
On start et enabled le service named (qui est notre serveur dns)
Et on ajoute le port nécéssaire au firewall
```
[adrien@dns1 ~]$ systemctl enable --now named
[adrien@dns1 ~]$ firewall-cmd --add-service=dns --permanent;firewall-cmd --reload
```
Tester le DNS depuis marcel.client1.tp3
On teste sur google.com
```
[adrien@marcel ~]$ dig google.com @10.3.0.2
; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> google.com @10.3.0.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61080
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 5b8c5abec81f93d273a61bbd615b743c743dd94ad6052fc2 (good)
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 104 IN A 142.250.179.110
;; AUTHORITY SECTION:
google.com. 172604 IN NS ns2.google.com.
google.com. 172604 IN NS ns3.google.com.
google.com. 172604 IN NS ns1.google.com.
google.com. 172604 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns2.google.com. 172604 IN A 216.239.34.10
ns1.google.com. 172604 IN A 216.239.32.10
ns3.google.com. 172604 IN A 216.239.36.10
ns4.google.com. 172604 IN A 216.239.38.10
ns2.google.com. 172604 IN AAAA 2001:4860:4802:34::a
ns1.google.com. 172604 IN AAAA 2001:4860:4802:32::a
ns3.google.com. 172604 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 172604 IN AAAA 2001:4860:4802:38::a
;; Query time: 1 msec
;; SERVER: 10.3.0.2#53(10.3.0.2)
;; WHEN: Mon Oct 04 23:38:05 CEST 2021
;; MSG SIZE rcvd: 331
```
On teste sur la zone forward
```
[adrien@marcel ~]$ dig dns1.server1.tp3 @10.3.0.2
; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> dns1.server1.tp3 @10.3.0.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5859
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 71ac3e3bc695f9f90ad8e2b5615b74e4d969db834c2f0cde (good)
;; QUESTION SECTION:
;dns1.server1.tp3. IN A
;; ANSWER SECTION:
dns1.server1.tp3. 86400 IN A 10.3.0.2
;; AUTHORITY SECTION:
server1.tp3. 86400 IN NS dns1.server1.tp3.
;; Query time: 1 msec
;; SERVER: 10.3.0.2#53(10.3.0.2)
;; WHEN: Mon Oct 04 23:40:52 CEST 2021
;; MSG SIZE rcvd: 103
```
A chaque fois on voit que c'est bien le serveur DNS qui répond grace a cette ligne ``;; SERVER: 10.3.0.2#53(10.3.0.2)`` , 10.3.0.2 étant l'ip du serveur DNS
| Nom machine | Adresse IP `client1` | Adresse IP `server1` | Adresse IP `server2` | Adresse de passerelle |
|--------------|----------------------|----------------------|----------------------|-----------------------|
| `router.tp3` | `10.3.0.190/26` | `10.3.0.126/25` | `10.3.0.206/28` | Carte NAT
| `dhcp.client1.tp3` | `10.3.0.130/26` | | | `10.3.0.190/26` |
| `marcel.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
| `dns1.server1.tp3` | | 10.3.0.2/25 | | `10.3.0.126/25`
## 3. Get deeper
### A. DNS forwarder
Affiner la configuration du DNS
```
[...]
recursion yes;
[...]
```
Marcel peut résoudre des noms publics comme google.com en utilisant mon serveur DNS
```
[adrien@marcel ~]$ dig google.com
; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57298
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 1c6eaa8b63e7111379448ccb615bf9e8717713ba1558ad89 (good)
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 300 IN A 216.58.214.174
;; AUTHORITY SECTION:
google.com. 172800 IN NS ns4.google.com.
google.com. 172800 IN NS ns2.google.com.
google.com. 172800 IN NS ns3.google.com.
google.com. 172800 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns2.google.com. 172800 IN A 216.239.34.10
ns1.google.com. 172800 IN A 216.239.32.10
ns3.google.com. 172800 IN A 216.239.36.10
ns4.google.com. 172800 IN A 216.239.38.10
ns2.google.com. 172800 IN AAAA 2001:4860:4802:34::a
ns1.google.com. 172800 IN AAAA 2001:4860:4802:32::a
ns3.google.com. 172800 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 172800 IN AAAA 2001:4860:4802:38::a
;; Query time: 3479 msec
;; SERVER: 10.3.0.2#53(10.3.0.2)
;; WHEN: Tue Oct 05 09:08:24 CEST 2021
;; MSG SIZE rcvd: 331
```
Cet ligne montre que marcel passe bien par le server dns `;; SERVER: 10.3.0.2#53(10.3.0.2)`
## B. On revient sur la conf du DHCP
Le DHCP donne désormais l'adresse de mon serveur DNS aux clients
```
[adrien@dhcp ~]$ sudo cat /etc/dhcp/dhcpd.conf
default-lease-time 900;
[...]
option domain-name-servers 10.3.0.2;
}
```
Création de johnny
```
[adrien@johnny ~]$ hostname
johnny.client1.tp3
```
Et qui récupére ses informations en grace au dhcp
```
[adrien@johnny ~]$ cat /etc/sysc
sysconfig/ sysctl.conf sysctl.d/
[adrien@johnny ~]$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s8
UUID=1a3a72a0-92d6-4bd0-bf49-afea13bf8877
DEVICE=enp0s8
ONBOOT=yes
```
| Nom machine | Adresse IP `client1` | Adresse IP `server1` | Adresse IP `server2` | Adresse de passerelle |
|--------------|----------------------|----------------------|----------------------|-----------------------|
| `router.tp3` | `10.3.0.190/26` | `10.3.0.126/25` | `10.3.0.206/28` | Carte NAT
| `dhcp.client1.tp3` | `10.3.0.130/26` | | | `10.3.0.190/26` |
| `marcel.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
| `dns1.server1.tp3` | | `10.3.0.2/25` | | `10.3.0.126/25`
| `johnny.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
## III. Services métier
Setup d'une nouvelle machine, qui sera un serveur Web, une belle appli pour nos clients
Serveur NGINX
```
[adrien@web1 ~]$ sudo dnf install nginx
[...]
[adrien@web1 ~]$ sudo systemctl start nginx
[adrien@web1 ~]$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor prese>
Active: active (running) since Fri 2021-10-08 13:09:05 CEST; 5min ago
[...]
[adrien@web1 ~]$ sudo firewall-cmd --permanent --zone=public --add-service=http
success
[adrien@web1 ~]$ sudo firewall-cmd --zone=public --add-service=http
success
```
Test test test et re-test
Curl depuis Marcel :
```
[adrien@marcel ~]$ curl web1:80
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
[...]
</div>
</div>
</body>
</html>
```
| Nom machine | Adresse IP `client1` | Adresse IP `server1` | Adresse IP `server2` | Adresse de passerelle |
|--------------|----------------------|----------------------|----------------------|-----------------------|
| `router.tp3` | `10.3.0.190/26` | `10.3.0.126/25` | `10.3.0.206/28` | Carte NAT
| `dhcp.client1.tp3` | `10.3.0.130/26` | | | `10.3.0.190/26` |
| `marcel.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
| `dns1.server1.tp3` | | `10.3.0.2/25` | | `10.3.0.126/25`
| `johnny.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
| `web1.server2.tp3` | | | `10.3.0.194` | `10.3.0.206/28`
### 2. Partage de fichiers
#### B. Le setup wola
Setup d'une nouvelle machine, qui sera un serveur NFS
```
[adrien@nfs1 ~]$ sudo dnf -y install nfs-utils
[...]
[adrien@nfs1 ~]$ cat /etc/idmapd.conf
[...]
Domain = server2.tp3
[...]
[adrien@nfs1 ~]$ cat /etc/exports
/srv/nfs_share/ 10.3.0.195/28(rw,no_root_squash)
```
Configuration du client NFS
```
[adrien@web1 ~]$ sudo dnf -y install nfs-utils
[...]
[adrien@web1 ~]$ cat /etc/idmapd.conf
[...]
Domain = server2.tp3
[...]
[adrien@web1 ~]$ sudo mount -t nfs nfs1.server2.tp3:/srv/nfs_share/ /srv/nfs/
[adrien@web1 ~]$ cat /etc/fstab
[...]
nfs1.server2.tp3:/srv/nfs_share/ /srv/nfs/ nfs defaults 0 0
```
TEEEEST
tester que vous pouvez lire et écrire dans le dossier /srv/nfs depuis web1.server2.tp3
```
[adrien@web1 ~]$ cd /srv/nfs/
[adrien@web1 nfs]$ echo "Salut à toi It4 si tu lis ce message" > message.txt
[adrien@web1 nfs]$ ls
message.txt
[adrien@web1 nfs]$ cat message.txt
Salut à toi It4 si tu lis ce message
```
vous devriez voir les modifications du côté de nfs1.server2.tp3 dans le dossier /srv/nfs_share/
```
[adrien@nfs1 ~]$ cd /srv/nfs_share/
[adrien@nfs1 nfs_share]$ ls
message.txt
[adrien@nfs1 nfs_share]$ cat message.txt
Salut à toi It4 si tu lis ce message
```
## IV. Un peu de théorie : TCP et UDP
Déterminer, pour chacun de ces protocoles, s'ils sont encapsulés dans du TCP ou de l'UDP :
SSH : TCP
HTTP : TCP
DNS : UDP
NFS : TCP
## V. El final

| Nom du réseau | Adresse du réseau | Masque | Nombre de clients possibles | Adresse passerelle | [Adresse broadcast](../../cours/lexique/README.md#adresse-de-diffusion-ou-broadcast-address) |
|---------------|-------------------|---------------|-----------------------------|--------------------|----------------------------------------------------------------------------------------------|
| `client1` | `10.3.0.128` | `255.255.255.192` | 62| `10.3.0.190` | `10.3.0.191` |
| `server1` | `10.3.0.0` | `255.255.255.128` | 126 | `10.3.0.126` | `10.3.0.127` |
| `server2` | `10.3.0.192` | `255.255.255.240` | 14 | `10.3.0.206` | `10.3.0.207`|
| Nom machine | Adresse IP `client1` | Adresse IP `server1` | Adresse IP `server2` | Adresse de passerelle |
|--------------|----------------------|----------------------|----------------------|-----------------------|
| `router.tp3` | `10.3.0.190/26` | `10.3.0.126/25` | `10.3.0.206/28` | Carte NAT
| `dhcp.client1.tp3` | `10.3.0.130/26` | | | `10.3.0.190/26` |
| `marcel.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
| `dns1.server1.tp3` | | `10.3.0.2/25` | | `10.3.0.126/25`
| `johnny.client1.tp3` | `IP dynamiques` | | | `10.3.0.190/26`
| `web1.server2.tp3` | | | `10.3.0.194` | `10.3.0.206/28`
| `nfs1.server2.tp3` | | | `10.3.0.195` | `10.3.0.206/28`