From c5108dcccfa232db3ff581012e062a00b65d0ad5 Mon Sep 17 00:00:00 2001 From: papush! Date: Wed, 6 Nov 2019 07:36:00 +0100 Subject: [PATCH] coucou --- VM1-6/Vagrantfile | 2 +- VM3-6/Vagrantfile | 2 +- partage/Makefile | 53 +++++++++++--------------- partage/Makefile.old | 46 +++++++++++++++++++++++ partage/build/ext-in.o | Bin 5840 -> 0 bytes partage/build/ext-out.o | Bin 5808 -> 0 bytes partage/build/extremite.a | Bin 9020 -> 0 bytes partage/build/extremite.o | Bin 8864 -> 0 bytes partage/build/iftun.a | Bin 7876 -> 0 bytes partage/build/iftun.o | Bin 7720 -> 0 bytes partage/build/test-iftun.o | Bin 5992 -> 0 bytes partage/capture.txt | 23 ++++++++++++ partage/config.vm1-6 | 9 +++++ partage/config.vm3-6 | 9 +++++ partage/configure-tun.sh | 4 +- partage/ext-in | Bin 14528 -> 19344 bytes partage/ext-out | Bin 14504 -> 19320 bytes partage/src/ext-in.c | 18 ++++++++- partage/src/ext-out.c | 16 +++++++- partage/src/extremite.c | 46 ++++++++++++++++++----- partage/src/extremite.h | 3 +- partage/src/iftun.c | 17 ++++----- partage/src/iftun.h | 2 +- partage/src/tunnel64d.c | 74 +++++++++++++++++++++++++++++++++++++ partage/test-iftun | Bin 13552 -> 13472 bytes partage/tunnel64d | Bin 0 -> 22712 bytes 26 files changed, 265 insertions(+), 59 deletions(-) create mode 100644 partage/Makefile.old delete mode 100644 partage/build/ext-in.o delete mode 100644 partage/build/ext-out.o delete mode 100644 partage/build/extremite.a delete mode 100644 partage/build/extremite.o delete mode 100644 partage/build/iftun.a delete mode 100644 partage/build/iftun.o delete mode 100644 partage/build/test-iftun.o create mode 100644 partage/capture.txt create mode 100644 partage/config.vm1-6 create mode 100644 partage/config.vm3-6 create mode 100644 partage/src/tunnel64d.c create mode 100755 partage/tunnel64d diff --git a/VM1-6/Vagrantfile b/VM1-6/Vagrantfile index 3451f76..0d45707 100644 --- a/VM1-6/Vagrantfile +++ b/VM1-6/Vagrantfile @@ -25,7 +25,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.provider "virtualbox" do |vb| # Commenter pour s'exécuter sans GUI - vb.gui = true + # vb.gui = true vb.customize ["modifyvm", :id, "--memory", "768"] end diff --git a/VM3-6/Vagrantfile b/VM3-6/Vagrantfile index 806afd1..c62e61a 100644 --- a/VM3-6/Vagrantfile +++ b/VM3-6/Vagrantfile @@ -25,7 +25,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.provider "virtualbox" do |vb| # Commenter pour s'exécuter sans GUI - vb.gui = true + # vb.gui = true vb.customize ["modifyvm", :id, "--memory", "768"] end diff --git a/partage/Makefile b/partage/Makefile index 080b849..f2c2e93 100644 --- a/partage/Makefile +++ b/partage/Makefile @@ -1,40 +1,31 @@ -CC := gcc -Wall -Wextra -Wpedantic -Werror -Iinclude -std=c11 -g +CC := gcc -Wall -Wextra -Wpedantic -Werror -Iinclude -g + +LIBS := + +LDFLAGS := $(LDFLAGS) $(shell pkg-config --libs $(LIBS)) +CFLAGS := $(CFLAGS) $(shell pkg-config --cflags $(LIBS)) + +CFLAGS := $(CFLAGS) -D_POSIX_C_SOURCE=200809L + +BUILD_DIR ?= build + +OUT := $(notdir $(shell pwd)) + +SRC := $(wildcard src/*.c) +OBJS := $(patsubst src/%.c,$(BUILD_DIR)/%.o,$(SRC)) +DEPS := $(wildcard $(BUILD_DIR)/*.d) -all: build test-iftun ext-in ext-out +all: ext-in ext-out test-iftun tunnel64d -build: - -mkdir build +$(OUT): $(OBJS) + $(CC) $(LDFLAGS) -o $@ $^ -ext-in: build/ext-in.o build/extremite.a - $(CC) $(CFLAGS) $^ -o $@ -ext-out: build/ext-out.o build/extremite.a - $(CC) $(CFLAGS) $^ -o $@ +-include $(DEPS) +$(BUILD_DIR)/%.o: src/%.c + $(CC) $(CFLAGS) -MP -MD $< -c -o $@ -build/ext-in.o: src/ext-in.c src/extremite.h - $(CC) $(CFLAGS) $< -c -o $@ - -build/ext-out.o: src/ext-out.c src/extremite.h - $(CC) $(CFLAGS) $< -c -o $@ - -build/extremite.a: build/extremite.o - ar rcs $@ $< - -build/extremite.o: src/extremite.c src/extremite.h - $(CC) $(CFLAGS) $< -c -o $@ - -test-iftun: build/test-iftun.o build/iftun.a - $(CC) $(CFLAGS) $^ -o $@ - -build/test-iftun.o: src/test-iftun.c src/iftun.h - $(CC) $(CFLAGS) $< -c -o $@ - -build/iftun.a: build/iftun.o - ar rcs $@ $< - -build/iftun.o: src/iftun.c src/iftun.h - $(CC) $(CFLAGS) $< -c -o $@ clean: -rm -f $(BUILD_DIR)/*.o diff --git a/partage/Makefile.old b/partage/Makefile.old new file mode 100644 index 0000000..9836fb9 --- /dev/null +++ b/partage/Makefile.old @@ -0,0 +1,46 @@ +CC := gcc -Wall -Wextra -Wpedantic -Werror -Iinclude -std=c11 -g -D_POSIX_C_SOURCE=200809L + + +all: build test-iftun ext-in ext-out tunnel64d + +build: + -mkdir build + +tunnel64d: build/tunnel64d.o build/iftun.a build/extremite.a + $(CC) $(CFLAGS) $^ -o $@ + +build/tunnel64d.o: src/tunnel64d.c src/iftun.h src/extremite.h + $(CC) $(CFLAGS) $< -c -o $@ + +ext-in: build/ext-in.o build/extremite.a build/iftun.a + $(CC) $(CFLAGS) $^ -o $@ + +ext-out: build/ext-out.o build/extremite.a build/iftun.a + $(CC) $(CFLAGS) $^ -o $@ + +build/ext-in.o: src/ext-in.c src/extremite.h src/iftun.h + $(CC) $(CFLAGS) $< -c -o $@ + +build/ext-out.o: src/ext-out.c src/extremite.h src/iftun.h + $(CC) $(CFLAGS) $< -c -o $@ + +build/extremite.a: build/extremite.o + ar rcs $@ $< + +build/extremite.o: src/extremite.c src/extremite.h + $(CC) $(CFLAGS) $< -c -o $@ + +test-iftun: build/test-iftun.o build/iftun.a + $(CC) $(CFLAGS) $^ -o $@ + +build/test-iftun.o: src/test-iftun.c src/iftun.h + $(CC) $(CFLAGS) $< -c -o $@ + +build/iftun.a: build/iftun.o + ar rcs $@ $< + +build/iftun.o: src/iftun.c src/iftun.h + $(CC) $(CFLAGS) $< -c -o $@ + +clean: + -rm -f build/* diff --git a/partage/build/ext-in.o b/partage/build/ext-in.o deleted file mode 100644 index 66ad5b59d640d9443c78fa63765a91ab457acbe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5840 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 a><1~sX8#Fj`2#8+z~(^-sBusp0|NkgVqzZv diff --git a/partage/build/extremite.a b/partage/build/extremite.a deleted file mode 100644 index 15a13a26ba3f5ae89e32c8a434560187d0934f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9020 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 YJ~v1R-F{Fq!Djyqki!@l7zpKG00i5L8~^|S diff --git a/partage/build/extremite.o b/partage/build/extremite.o deleted file mode 100644 index f0d5b50002c0763c55e34512d38f4d8cb83892f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8864 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 G-F^TZ1iK;t diff --git a/partage/build/iftun.o b/partage/build/iftun.o deleted file mode 100644 index 79fbe41b69fd3febb75fd2f9f82e37cb08121b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7720 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 Z0!=EQ+Yd@p*z6C0mOuU=!;mn#{Q&VQo*V!G diff --git a/partage/build/test-iftun.o b/partage/build/test-iftun.o deleted file mode 100644 index b3aa4682f126677a570d5522c07e2c8ba71030cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5992 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 diff --git a/partage/capture.txt b/partage/capture.txt new file mode 100644 index 0000000..9f762ff --- /dev/null +++ b/partage/capture.txt @@ -0,0 +1,23 @@ +No. Time Source Destination Protocol Length Info + 1 0.000000000 172.16.2.1 172.16.2.10 ICMP 84 Echo (ping) request id=0x0529, seq=1/256, ttl=64 (no response found!) + +Frame 1: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface 0 +Raw packet data +Internet Protocol Version 4, Src: 172.16.2.1 (172.16.2.1), Dst: 172.16.2.10 (172.16.2.10) +Internet Control Message Protocol + +No. Time Source Destination Protocol Length Info + 2 1.009432000 172.16.2.1 172.16.2.10 ICMP 84 Echo (ping) request id=0x0529, seq=2/512, ttl=64 (no response found!) + +Frame 2: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface 0 +Raw packet data +Internet Protocol Version 4, Src: 172.16.2.1 (172.16.2.1), Dst: 172.16.2.10 (172.16.2.10) +Internet Control Message Protocol + +No. Time Source Destination Protocol Length Info + 3 2.016974000 172.16.2.1 172.16.2.10 ICMP 84 Echo (ping) request id=0x0529, seq=3/768, ttl=64 (no response found!) + +Frame 3: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface 0 +Raw packet data +Internet Protocol Version 4, Src: 172.16.2.1 (172.16.2.1), Dst: 172.16.2.10 (172.16.2.10) +Internet Control Message Protocol diff --git a/partage/config.vm1-6 b/partage/config.vm1-6 new file mode 100644 index 0000000..fb45a3f --- /dev/null +++ b/partage/config.vm1-6 @@ -0,0 +1,9 @@ +# interface tun +tun=tun0 +# adresse locale +inip=172.16.2.1/28 +inport=123 +options= +# adresse distante +outip=fc00:1234:2::36 +outport=123 diff --git a/partage/config.vm3-6 b/partage/config.vm3-6 new file mode 100644 index 0000000..cfae7ff --- /dev/null +++ b/partage/config.vm3-6 @@ -0,0 +1,9 @@ +# interface tun +tun=tun0 +# adresse locale +inip=172.16.2.10/28 +inport=123 +options= +# adresse distante +outip=fc00:1234:1::16 +outport=123 diff --git a/partage/configure-tun.sh b/partage/configure-tun.sh index 427851c..2339791 100755 --- a/partage/configure-tun.sh +++ b/partage/configure-tun.sh @@ -1,3 +1,3 @@ #!/bin/sh -ip l set tun0 up -ip a a 172.16.2.1/28 dev tun0 +ip l set "$1" up +ip a a "$2" dev tun0 diff --git a/partage/ext-in b/partage/ext-in index 4fea883bd4a85a4300b960761e295ee62e62dabb..6dbdd48e55cd965c4a2fceed9f3662bf9f579384 100755 GIT binary patch literal 19344 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 delta 6911 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 literal 14504 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 N28PvWl4#Ch002@Q%!2>` diff --git a/partage/src/ext-in.c b/partage/src/ext-in.c index af6e578..d61bcf0 100644 --- a/partage/src/ext-in.c +++ b/partage/src/ext-in.c @@ -1,10 +1,13 @@ #include "extremite.h" +#include "iftun.h" #include #include +#include +#include -int main(int argc, char *argv[argc]){ +int main(int argc, char *argv[argc]) { int port = 123; if (argc == 3) { port = atoi(argv[2]); @@ -13,6 +16,17 @@ int main(int argc, char *argv[argc]){ fprintf(stderr, "Utilisation : %s adresse [port]\n", argv[0]); return 1; } - ext_in(argv[1], port, 0); + + if (getuid() != 0) { + fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]); + return 1; + } + int tun = tun_alloc("tun0"); + if (system("./configure-tun.sh tun0 172.16.2.1/28") != 0) { + fprintf(stderr, "Erreur lors de l’exécution du script de configuration de l’interface.\n"); + return 1; + } + ext_in(argv[1], port, tun); + return 0; } diff --git a/partage/src/ext-out.c b/partage/src/ext-out.c index 12a66bc..0bada03 100644 --- a/partage/src/ext-out.c +++ b/partage/src/ext-out.c @@ -1,7 +1,10 @@ #include "extremite.h" +#include "iftun.h" #include #include +#include +#include int main(int argc, char *argv[argc]) { @@ -13,6 +16,17 @@ int main(int argc, char *argv[argc]) { fprintf(stderr, "Utilisation : %s [port]\n", argv[0]); return 1; } - ext_out(port); + + if (getuid() != 0) { + fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]); + return 1; + } + int tun = tun_alloc("tun0"); + if (system("./configure-tun.sh tun0 172.16.2.10/28") != 0) { + fprintf(stderr, "Erreur lors de l’exécution du script de configuration de l’interface.\n"); + return 1; + } + ext_out(port, tun); + return 0; } diff --git a/partage/src/extremite.c b/partage/src/extremite.c index 295ea28..16337b9 100644 --- a/partage/src/extremite.c +++ b/partage/src/extremite.c @@ -1,5 +1,3 @@ -#define _POSIX_C_SOURCE 200112L - #include #include #include @@ -15,15 +13,21 @@ #include #include #include +#include -void ext_out(int port) { +#define BUFSIZE 1024 + + +void ext_out(int port, int out) { int server = socket(AF_INET6, SOCK_STREAM, 0); if (server == -1) { perror("socket"); exit(1); } + setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &(int) {1}, sizeof (int)); + struct sockaddr_in6 server_addr = {0}; server_addr.sin6_family = AF_INET6; server_addr.sin6_port = htons(port); @@ -49,10 +53,19 @@ void ext_out(int port) { inet_ntop(AF_INET6, &(client_addr.sin6_addr), client_addr_pretty, sizeof client_addr_pretty); printf("Client connecté : %s\n", client_addr_pretty); - char buf[1024]; + char buf[BUFSIZE]; + ssize_t n; while (1) { - ssize_t n = read(client, buf, sizeof buf); - write(1, buf, n); + n = read(client, buf, sizeof buf); + if (n == -1) { + perror("read"); + exit(1); + } + n = write(out, buf, n); + if (n == -1) { + perror("write"); + exit(1); + } } close(client); @@ -73,17 +86,18 @@ void ext_in(const char addr[], int port, int in) { inet_pton(AF_INET6, addr, &sa.sin6_addr); puts("Connexion."); - if (connect(s, (struct sockaddr *) &sa, sizeof sa) == -1) { + while (connect(s, (struct sockaddr *) &sa, sizeof sa) == -1) { perror("connect"); - exit(1); + sleep(1); } char addr_pretty[INET6_ADDRSTRLEN] = ""; inet_ntop(AF_INET6, &(sa.sin6_addr), addr_pretty, sizeof addr_pretty); printf("Connecté à : %s\n", addr_pretty); - char buf[1024]; + char buf[BUFSIZE]; + ssize_t n; while (1) { - ssize_t n = read(in, buf, sizeof buf); + n = read(in, buf, sizeof buf); if (n == -1) { perror("read"); exit(1); @@ -97,3 +111,15 @@ void ext_in(const char addr[], int port, int in) { close(s); } + + +void ext_bidir(const char addr[], int port, int in, int out) { + pid_t pid = fork(); + if (pid == 0) { + ext_in(addr, port, in); + } + else { + ext_out(port, out); + waitpid(pid, NULL, 0); + } +} diff --git a/partage/src/extremite.h b/partage/src/extremite.h index 3ad66dc..ee70913 100644 --- a/partage/src/extremite.h +++ b/partage/src/extremite.h @@ -2,8 +2,9 @@ #define EXTREMITE_H -void ext_out(int port); +void ext_out(int port, int out); void ext_in(const char addr[], int port, int in); +void ext_bidir(const char addr[], int port, int in, int out); #endif diff --git a/partage/src/iftun.c b/partage/src/iftun.c index 25b3008..1d17640 100644 --- a/partage/src/iftun.c +++ b/partage/src/iftun.c @@ -17,27 +17,26 @@ #include -int tun_alloc(char *dev) { +int tun_alloc(const char *dev) { int fd = open("/dev/net/tun", O_RDWR); - if(fd < 0 ) { - perror("alloc tun"); + if(fd < 0) { + perror("open"); exit(1); } - struct ifreq ifr = {.ifr_flags = IFF_TUN}; - ifr.ifr_flags = IFF_TUN | IFF_NO_PI; + struct ifreq ifr = { + .ifr_flags = IFF_TUN | IFF_NO_PI + }; if (*dev) { strncpy(ifr.ifr_name, dev, IFNAMSIZ); } int err = ioctl(fd, TUNSETIFF, (void *) &ifr); - if(err < 0 ){ - close(fd); - return err; + if(err < 0){ + exit(1); } - strcpy(dev, ifr.ifr_name); return fd; } diff --git a/partage/src/iftun.h b/partage/src/iftun.h index a9139b0..3747b3b 100644 --- a/partage/src/iftun.h +++ b/partage/src/iftun.h @@ -2,7 +2,7 @@ #define IFTUN_H -int tun_alloc(char *dev); +int tun_alloc(const char *dev); int copy(int src, int dest); diff --git a/partage/src/tunnel64d.c b/partage/src/tunnel64d.c new file mode 100644 index 0000000..558b184 --- /dev/null +++ b/partage/src/tunnel64d.c @@ -0,0 +1,74 @@ +#include "iftun.h" +#include "extremite.h" + +#include +#include +#include +#include +#include +#include + + +char *dev; +char *inip; +char *outip; +int inport; +int outport; + + +int main(int argc, char *argv[argc]) { + if (argc != 2) { + fprintf(stderr, "Utilisation : %s fichier_conf\n", argv[0]); + } + if (getuid() != 0) { + fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]); + return 1; + } + + FILE *f = fopen(argv[1], "r"); + + char *line = NULL; + size_t n = 0; + ssize_t len; + while ((len = getline(&line, &n, f)) > 0) { + char *pair = strtok(line, "#"); + char *key = strtok(pair, "="); + char *val = strtok(NULL, "="); + if (val != NULL) { + line[len-1] = '\0'; + printf("%s=%s\n", key, val); + if (strcmp(key, "tun") == 0) { + dev = malloc(strlen(val)); + strcpy(dev, val); + } + else if (strcmp(key, "inip") == 0) { + inip = malloc(strlen(val) + 1); + strcpy(inip, val); + } + else if (strcmp(key, "outip") == 0) { + outip = malloc(strlen(val) + 1); + strcpy(outip, val); + } + else if (strcmp(key, "inport") == 0) { + inport = atoi(val); + } + else if (strcmp(key, "outport") == 0) { + outport = atoi(val); + } + } + } + if (line) free(line); + fclose(f); + + int tun = tun_alloc(dev); + + char full_cmd[1024] = ""; + sprintf(full_cmd, "./configure-tun.sh %s %s", dev, inip); + if (system(full_cmd) != 0) { + fprintf(stderr, "Erreur lors de l’exécution du script de configuration de l’interface.\n"); + return 1; + } + ext_bidir(outip, outport, tun, tun); + + return 0; +} diff --git a/partage/test-iftun b/partage/test-iftun index e9234a684980a6ed9a81c10406f1e7e797e6a108..326c2a200bdccb64f3570a75b45d08082c5f9960 100755 GIT binary patch delta 4591 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 b?Kyuy25cC9Om;Le=lq}n(Pclm(L^2q_D7&S diff --git a/partage/tunnel64d b/partage/tunnel64d new file mode 100755 index 0000000000000000000000000000000000000000..d94f5576cae4bc55a4b07ce7a69fe740822737e9 GIT binary patch literal 22712 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