Auteur Sujet: Utiliser un serveur Linux à la place de la freebox pour débrider la connexion  (Lu 65256 fois)

0 Membres et 1 Invité sur ce sujet

corrector

  • Invité
Fichiers de config du réseau sous linux
« Réponse #60 le: 02 août 2013 à 19:36:57 »
oui sous linux mais avec openwrt

ils se sont tapé un délire sur leurs fichiers de confs
ça ressemble pas aux autres distrib

la faut que je reprenne tout depuis la base (reset du routeur) pour avoir un truc propre et pouvoir recommencer à comprendre comment il fonctionne)
Quelle horreur ces machins... j'ai l'impression d'être sous Windows.

Moi je virerais tous les scripts et les automatismes pour n'avoir que le shell et mon script de démarrage.

corrector

  • Invité
Bon les djeun's, j'ai besoin de votre aide!
Depuis que je suis dans ma configuration:

eth0:LAN
eth1:FBX V6 bridge
eth2:SFR ONT
br0:bridge entre eth0.100 et eth1.100

J'ai ma connection vers la FBX V6 qui se met a deconner au bout de 2/3heures.

Cette config que me permet d avoir le net avec les 2 interfaces (avec les bonnes regles iptables), ainsi que la tele sur la freebox V6 TV


J'observe bcp de pertes de paquets:
- ping www.free.fr devient instable
- le ping depuis l exterieur vers ma freebox (qui repond au ping) fonctionne nickel

J'ai donc essaye de:
- changer de carte reseau: pareil
- changer de cable reseau: pareil

Qd ca deconne et que je branche mon mac sur la fbx au lieu du routeur, ca semble remarcher correctement.
Si je reboot le routeur ca remarche aussi (pdt 2 ou 3h toujours).

Avez vous une idee de ce qui peut causer le probleme ?
Heu... si on commençait pas expliciter les règles iptables et le reste de la config réseau? ;)

Est-ce que cela peut venir de br0 ?
Je ne vois pas de lien plausible.

EDIT2: Je tente un MTU de 1492 au lieu de 1500...
Je ne vois pas comment ça pourrait être un problème de MTU.

Electrocut

  • Client Bbox adsl
  • *
  • Messages: 399
  • Pont-Péan (35)
La MTU ne concerne que TCP il me semble.

En UDP c'est au niveau applicatif le réglage de la tailles des paquets (il est impossible de fragmenter un paquet UDP ou ICMP)
De ce que j'en comprends :

- Le MTU, c'est la taille maximum du paquet IP pouvant être transmis sans fragmentation. Le MTU s'applique donc à tous les protocoles au dessus d'IP.
Le TCP-MSS (que les routeurs ont l'habitude de modifier à la volée, afin que les clients TCP n'envoient pas de trames TCP, pour lesquelles Entête IP + Entête TCP + Données TCP > MTU routeur) ne s'applique par contre par définition, qu'à TCP.

- Une trame UDP peut donc très bien subir une fragmentation IP. Ça sera le cas dès lors que Entête IP + Entête UDP + données UDP > MTU

Exemple d'envoi d'un paquet IP de 2028 octets (Entête IP = 20 + entête ICMP + 8 + données du Ping), qui va se voir fragmenter en plusieurs paquets IP :

Citer
C:\>ping www.free.fr -l 2000

Envoi d'une requête 'ping' sur www.free.fr [212.27.48.10] avec 2000 octets de données :
Réponse de 212.27.48.10 : octets=2000 temps=7 ms TTL=55
Réponse de 212.27.48.10 : octets=2000 temps=7 ms TTL=55
Réponse de 212.27.48.10 : octets=2000 temps=7 ms TTL=55

Avec le flag IP "don't fragment" de positionné, ça ne passe pas :

Citer
C:\>ping www.free.fr -l 2000 -f

Envoi d'une requête 'ping' sur www.free.fr [212.27.48.10] avec 2000 octets de données :
Le paquet doit être fragmenté mais paramétré DF.
Le paquet doit être fragmenté mais paramétré DF.
Le paquet doit être fragmenté mais paramétré DF.

Ici, il y a fort à parier qu'un routeur a jeté nos paquets IP notés "fragmentés", sans nous envoyer d'erreur ICMP :

Citer
C:\>ping www.google.fr -l 2000

Envoi d'une requête 'ping' sur www.google.fr [74.125.132.94] avec 2000 octets de données :
Délai d'attente de la demande dépassé.
Délai d'attente de la demande dépassé.

corrector

  • Invité
Fragmentation, UDP, TCP, IP...
« Réponse #63 le: 02 août 2013 à 20:03:25 »
La MTU ne concerne que TCP il me semble.
Ouch, tu mélanges MTU et MSS!

MTU = taille maximum d'un datagramme IP complet (avec les en-têtes)
cela détermine la taille max de la charge utile de IP

MSS = Maximum Segment Size = taille maximum d'un segment TCP (charge utile TCP)

En UDP c'est au niveau applicatif le réglage de la tailles des paquets (il est impossible de fragmenter un paquet UDP ou ICMP)
Pardon?

Au contraire, le protocole IP fragmente automatiquement les datagrammes sans se soucier du protocole (TCP, UDP, ICMP, IP (4in4), ESP, 6in4...).

Mais le protocole UDP lui même ne s'occupe pas de fragmentation et de ré-assemblage (TCP non plus d'ailleurs!).

corrector

  • Invité
MTU, fragmentation IP, MSS clamp, PTMU
« Réponse #64 le: 02 août 2013 à 20:14:06 »
De ce que j'en comprends :

- Le MTU, c'est la taille maximum du paquet IP pouvant être transmis sans fragmentation. Le MTU s'applique donc à tous les protocoles au dessus d'IP.
Le TCP-MSS (que les routeurs ont l'habitude de modifier à la volée,
Oui mais cette méthode ("MSS clamp") est généralement implèmentée uniquement pour TCP dans IP (dans IPv4 en général), pas TCP dans IP dans IP, TCP dans 6in4 dans IP, et par définition pas TCP dans ESP (puisque c'est un tunnel sécurisé).

C'est donc un simple bidouillage.

La bonne méthode est que le routeur informe les périphériques du MTU de la route par défaut, afin que chaque périphérique puisse envoyer des paquets au bon gabarit. (C'est la méthode utilisée par la Freebox par exemple.)

Enfin le MTU vers une destination (PMTU, Path MTU) peut être découvert par essai et erreur, en envoyant des paquets non fragmentables (option don't-fragment) à la destination, en commençant par le MTU maximum (celui du lien local) et en diminuant jusqu'à réussir à atteindre la destination sans problème de taille (message d'erreur ICMP de type "destination unreachable" de cause "fragmentation needed").

Tous les OS modernes font de la découverte de MTU vers les destinations.

Sous Windows Vista vous pouvez afficher le cache de PMTU avec :

netsh interface ipv4 show destinationcache
netsh interface ipv6 show destinationcache

TheTroll

  • Client Free FTTH et
  • Client Bbox fibre FTTH
  • *
  • Messages: 525
  • Fiber addict :-)
Voici mes regles iptables (attention y a du monde :) )

#!/bin/bash

#############################################
################ CONFIG  ####################
#############################################

ILOCAL=eth0
IFREE=eth1
ISFR=eth2

MARKFREE=0x1
MARKSFR=0x2

MARKDEFAULT=$MARKFREE

#############################################
################ RULES ######################
#############################################

IPF="/sbin/iptables -t filter"
IPN="/sbin/iptables -t nat"
IPM="/sbin/iptables -t mangle"
IP6F="/sbin/ip6tables -t filter"

# Enable
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done

#############################################
################ FILTER  ####################
#############################################

$IPF -F INPUT
$IPF -F FORWARD
$IPF -F OUTPUT
$IPF -P INPUT ACCEPT
$IPF -P FORWARD ACCEPT
$IPF -P OUTPUT ACCEPT

# INPUT/FORWARD #############################

# SSH
$IPF -A INPUT -d tm -p tcp -m tcp --dport 22 -j ACCEPT

# HTTP
$IPF -A INPUT -d tm -p tcp -m tcp --dport 80 -j ACCEPT
$IPF -A INPUT -d tm -p tcp -m tcp --dport 443 -j ACCEPT

# Testdebit
$IPF -A INPUT -d tm -p tcp -m tcp --dport 5001 -j ACCEPT

# MDNS
$IPF -A INPUT -d 224.0.0.251 -j ACCEPT

# Freebox
$IPF -A INPUT -s 212.27.38.253 -j ACCEPT

# From ILOCAL (LAN) ############################

# Allow LAN packets to go out using FREE/SFR
$IPF -A FORWARD -i $ILOCAL -o $IFREE -j ACCEPT
$IPF -A FORWARD -i $ILOCAL -o $ISFR -j ACCEPT

# Allow LAN packets to go out using ILOCAL
$IPF -A FORWARD -i $ILOCAL -o $ILOCAL -j ACCEPT

# From Free ###########################

# Allow packet forwarding (to other machines)
$IPF -A FORWARD -i $IFREE -o $ILOCAL -j ACCEPT

# From SFR ############################

# Allow packet forwarding (to other machines)
$IPF -A FORWARD -i $ISFR -o $ILOCAL -j ACCEPT

# COMMON #####################################

# Local network and gateway
$IPF -A INPUT -s 192.168.0.0/24 -j ACCEPT
$IPF -A INPUT -s 192.168.1.0/24 -j ACCEPT
$IPF -A INPUT -s 127.0.0.1 -j ACCEPT

# Accept all established connections
$IPF -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPF -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# LOG
$IPF -A INPUT -i $ISFR -j ULOG --ulog-prefix="Attack SFR"
$IPF -A INPUT -i $IFREE -j ULOG --ulog-prefix="Attack FREE"

# Drop all the rest
$IPF -A INPUT -j DROP
$IPF -A FORWARD -j DROP

#############################################
################## NAT ######################
#############################################

$IPN -F PREROUTING
$IPN -F POSTROUTING
$IPN -F OUTPUT
$IPN -P PREROUTING ACCEPT
$IPN -P POSTROUTING ACCEPT
$IPN -P OUTPUT ACCEPT

# Router ####################################

# Masquerading
$IPN -A POSTROUTING -o $IFREE -j MASQUERADE
$IPN -A POSTROUTING -o $ISFR -j MASQUERADE

# Router port forwarding ####################

# To windows RDP
$IPN -A PREROUTING -i $IFREE -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.19:3389
$IPN -A PREROUTING -i $ISFR -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.19:3389
$IPN -A POSTROUTING -o $ILOCAL -d 192.168.0.19 -p tcp --dport 3389 -j SNAT --to-source 192.168.0.5

# Multipost PC
$IPN -A PREROUTING -i $IFREE -p udp --dport 8770 -j DNAT --to-destination 192.168.0.3:8770
$IPN -A PREROUTING -i $IFREE -p udp --dport 8771 -j DNAT --to-destination 192.168.0.3:8771

# Redirect all the rest to local (DMZ)
$IPN -A PREROUTING -i $IFREE -j DNAT --to-destination 192.168.0.5
$IPN -A PREROUTING -i $ISFR -j DNAT --to-destination 192.168.0.5

# LAN to WAN port forwarding  ###########################

# Redirect port 81 to 80 for Forwarded packets
$IPN -A PREROUTING  -i $ILOCAL -s 192.168.0.0/24 -p tcp --dport 81 -j DNAT --to-destination :80
$IPN -A POSTROUTING -o $ILOCAL -p tcp --dport 80 -j SNAT --to-source 192.168.0.5

# LOCAL to WAN port forwarding  ###########################

# Redirect port 81 to 80 for local packets going out using ILOCAL
$IPN -A OUTPUT -p tcp --dport 81 -j DNAT --to-destination :80

#############################################
############## MANGLE #######################
#############################################

$IPM -F PREROUTING
$IPM -F INPUT
$IPM -F FORWARD
$IPM -P PREROUTING ACCEPT
$IPM -P INPUT ACCEPT
$IPM -P FORWARD ACCEPT

# Prerouting ###############################

# Accept from bth gateways #################

# Restore incoming packets connection mark
$IPM -A PREROUTING -j CONNMARK --restore-mark

# Don't remark packets
$IPM -A PREROUTING -m mark ! --mark 0 -j ACCEPT

# Packets from Free ISP
$IPM -A PREROUTING -i $IFREE -j MARK --set-mark $MARKFREE

# Packets from SFR ISP
$IPM -A PREROUTING -i $ISFR -j MARK --set-mark $MARKSFR

# Mark outgoing packets from LAN ###########

# Local network packets default destination
$IPM -A PREROUTING -i $ILOCAL -s 192.168.0.0/24 -j MARK --set-mark $MARKDEFAULT

# Local network packets WEB
$IPM -A PREROUTING -i $ILOCAL -s 192.168.0.0/24 -p tcp --dport 80 -j MARK --set-mark $MARKSFR

# Local network packets WEB81
$IPM -A PREROUTING -i $ILOCAL -s 192.168.0.0/24 -p tcp --dport 81 -j MARK --set-mark $MARKFREE

# Freebox server gets a special treatment
$IPM -A PREROUTING -i $ILOCAL -s 192.168.0.0/24 -d 212.27.38.253 -j MARK --set-mark $MARKFREE

# Save connection mark
$IPM -A PREROUTING -j CONNMARK --save-mark

# Restore the connection mark so that outgoing packets use the right path
$IPM -A OUTPUT -j CONNMARK --restore-mark

# Output #################################

# Don't remark packets
$IPM -A OUTPUT -m mark ! --mark 0 -j ACCEPT

# Local packets default destination
$IPM -A OUTPUT -s 192.168.0.5 -j MARK --set-mark $MARKDEFAULT

# Local packets WEB
$IPM -A OUTPUT -s 192.168.0.5 -p tcp --dport 80 -j MARK --set-mark $MARKSFR

# Local packets WEB81
$IPM -A OUTPUT -s 192.168.0.5 -p tcp --dport 81 -j MARK --set-mark $MARKFREE

# Freebox server gets a special treatment
$IPM -A OUTPUT -d 212.27.38.253 -j MARK --set-mark $MARKFREE

# For quality test
$IPM -A OUTPUT -d [url=http://www.yahoo.fr]www.yahoo.fr[/url]  -p icmp -j MARK --set-mark $MARKFREE
$IPM -A OUTPUT -d [url=https://www.google.fr]www.google.fr[/url] -p icmp -j MARK --set-mark $MARKSFR

###########################################
############## IPV6 #######################
###########################################

$IP6F -F INPUT
$IP6F -F FORWARD
$IP6F -F OUTPUT
$IP6F -P INPUT DROP
$IP6F -P FORWARD DROP
$IP6F -P OUTPUT DROP


Script de routing:

# Reset table
ip route flush table free
ip rule del fwmark 0x1

# Route marked packets
ip route add table free 192.168.0.0/24 dev eth0
#ip route add table free default via XXX.XXX.XXX.254 : en mode bridge .....
ip route add table free default via 192.168.1.254 # Mode routeur
ip rule add fwmark 0x1 table free

# Reset table
ip route flush table sfr
ip rule del fwmark 0x2

# Route marked packets
ip route add table sfr 192.168.0.0/24 dev eth0
ip route add table sfr default via XXX.XXX.XXX.XXX
ip rule add fwmark 0x2 table sfr

/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# Local Network
allow-hotplug eth0
auto eth0
iface eth0 inet static
        address 192.168.0.5
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.5
        mtu 7200

# Freebox V6
allow-hotplug eth1
auto eth1
iface eth1 inet dhcp
post-up ifconfig eth1 mtu 1492

# Bridge VLAN 100 for Freebox Player
auto br0
iface br0 inet manual
bridge_ports eth0.100 eth1.100
bridge_stp off
bridge_maxwait 0
post-up sysctl -w net.bridge.bridge-nf-call-iptables=0

# SFR Box
allow-hotplug eth2
auto eth2
iface eth2 inet dhcp
post-up ifconfig eth2 mtu 1492

vivien

  • Administrateur
  • *
  • Messages: 27 226
    • Twitter LaFibre.info
Pourquoi utiliser "allow-hotplug" puis "auto" ?
Pour moi, c'est soit l'un soit l'autre, non ?

auto => configuration fait au démarrage même si câble non branché
allow-hotplug => configuration réalisée quand on branche le câble.

Perso j'ai eu des souci avec "allow-hotplug" donc je mets toujours "auto"

allow-hotplug eth1
auto eth1
iface eth1 inet dhcp

TheTroll

  • Client Free FTTH et
  • Client Bbox fibre FTTH
  • *
  • Messages: 525
  • Fiber addict :-)
je corrige thx..
mais bon surement pas la cause

eurusd

  • Client SFR fibre FTTH
  • *
  • Messages: 9
  • FTTH 1 Gb/s sur Paris (75)
Utiliser un serveur Linux à la place de la freebox pour débrider la connexion
« Réponse #68 le: 04 septembre 2013 à 17:31:16 »
Bonjour,

Une petite question sur les perfs dont je n'arrive pas a trouver la reponse.
Dans ce setup, qu'est ce qui concretement augmente les perfs? Le CPU du serveur qui remplace celui de la box? ou bien encore les cartes reseaux qui sont de meilleure qualité? ou bien les regles de routage?

Est ce qu'un routeur recent bien équipé comme un Asus RT-AC66 sera plus efficace qu'une freebox?

Merci!

corrector

  • Invité
Utiliser un serveur Linux à la place de la freebox pour débrider la connexion
« Réponse #69 le: 04 septembre 2013 à 23:25:36 »
La Freebox v5 est une box ADSL prévue pour un débit maximum de :

MaxBitRateDown : 25000000 bps (25.0 Mbps)   MaxBitRateUp 1000000 bps (1.0 Mbps)

d'après le serveur IGD de ma Freebox.

Le CPU est donc incapable de NAPT-er 100 Mbps.

torpedo

  • Client Orange Fibre
  • *
  • Messages: 119
  • Courbevoie (92) : FTTH Orange Play Fibre (300/100)
Utiliser un serveur Linux à la place de la freebox pour débrider la connexion
« Réponse #70 le: 05 septembre 2013 à 16:31:41 »

Est ce qu'un routeur recent bien équipé comme un Asus RT-AC66 sera plus efficace qu'une freebox?


La notion d'efficacité est assez subjective en l'absence d'objectifs précis.  ???
La Freebox Révo est IMHO la meilleure en termes techniques purs et conviendra à la majorité des utilisateurs. 8)
Pour les geeks disposant d'un portefeuille garni, un routeur comme celui que tu mentionnes offrira un plus. Il faudra cependant conserver la box dans ton installation car le routeur ne dispose pas d'interface optique  ::)

kgersen

  • Client Orange Fibre
  • Modérateur
  • *
  • Messages: 4 733
  • FTTH 1Gb/s sur Paris (75)
Utiliser un serveur Linux à la place de la freebox pour débrider la connexion
« Réponse #71 le: 05 septembre 2013 à 18:10:44 »
La notion d'efficacité est assez subjective en l'absence d'objectifs précis
La Freebox Révo est IMHO la meilleure en termes techniques purs et conviendra à la majorité des utilisateurs. 8)
Pour les geeks disposant d'un portefeuille garni, un routeur comme celui que tu mentionnes offrira un plus. Il faudra cependant conserver la box dans ton installation car le routeur ne dispose pas d'interface optique  ::)

L'objectif précis de la manip est de supprimer la box car c'est elle qui bride le débit (enfin c’était le cas récemment en tout cas, c'est peut-être en train de changer)

Il ne faut donc pas conserver la box.

Pour la connexion optique un simple convertisseur SFP-Ge suffit, par exemple un TP-Link MC220L a 25€.


 

Mobile View