Music brings Emotions, Emotions create Music

Shrunk Expand

Freebox tv bridge

Beaucoup veulent utiliser leur freebox en mode bridge et avoir la main sur le routeur/firewall juste derrière plutôt que d’utiliser la freebox en mode routeur.

Peu importe la raison, une recommandation serait de pouvoir filtrer ce qui sort. Parce que tout le monde pense se protéger du méchant internet, personne ne pense à empécher ses machines de causer vers dehors. Enfin bref.

Ceux qui ont passé leur freebox en mode bridge ont eu la méchante surprise de voir qu’ils paumaient la fonction TV ! En fait, cette fonction est toujours là, mais free dis le contraire.

Voici comment là réactiver.

Pour cette config, il faut avoir :

  • la freebox en mode bridge et non routeur
  • un firewall linux juste branché dessus
  • le décodeur TV free plus loin.

On a donc une configuration comme celle là :

freebox_tv_bridge

Les switchs ne sont pas nécessaires, mais si vous avez la freebox dans le garage, et la TV dans une autre pièce que le garage, c’est assez problable d’avoir ce type d’équipement.

Analyse

Le décodeur TV s’allume et tente de causer à la freebox pour s’y associer. Il fait ça de façon particulière : en utilisant un VLAN répéré par le nombre 100. C’est comme si vous tiriez des cables supplémentaires, avec écrit 100 dessus.

Donc, si on veut faire causer la freebox et le décodeur TV, il faut que le firewall linux au milieu sache causer dans ce “cablage 100”.

Pour ce faire, créons 2 interfaces supplémentaires dans ce nouveau réseau, une pour la patte interne, une pour la patte externe :


# set up VLAN 100 external
ip link add link eth0 name eth0.100 type vlan id 100

# set up VLAN 100 external
ip link add link eth1 name eth1.100 type vlan id 100

Voila, on a donc “branché” le réseau en orange sur notre firewall.

Mais, il faut que cela cause comme si le firewall était un simple switch ! uniquement pour ce réseau là, et pas pour le réseau vert “normal”. Pour le vert, il doit faire sa fonction de filtrage.

Donc, on relie les 2 nouvelles carte réseau dans un bridge :


# build bridge
brctl addbr fbxtv
brctl addif fbxtv eth0.100
brctl addif fbxtv eth1.100

et on active tout ça :


# up intf
ip link set dev eth0.100 up
ip link set dev eth1.100 up
ip link set dev fbxtv up

Et voila, niveau “connectique”, c’est ok.

Mais, la freebox ne peux pas encore causer au décodeur TV !

Pourquoi ? parce que la nouvelle interface du firewall “fbxtv” est filtrée par le firewall. Il faut autoriser uniquement le transit par cette interface, rien d’autre.


# allow packets to go back & forth via fbxtv bridge
iptables -I FORWARD -s 192.168.27.0/30 -i fbxtv -o fbxtv -j ACCEPT

On va voir le pourquoi de cette plage d’adresse. Détaillons la communication entre le décodeur TV et la freebox :

pour le voir faire un tcpdump -i fbxtv -n

Le décodeur TV demande une adresse IP à qui veut bien lui en donner une, la freebox lui dit :

“je suis  : 192.168.27.1, tu seras 192.168.27.14”


11:13:58.887241 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:07:cb:98:65:32 (oui Unknown), length 288
11:13:58.899415 IP 192.168.27.14.bootps > 192.168.27.1.bootpc: BOOTP/DHCP, Reply, length 548
11:13:58.901175 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:07:cb:98:65:32 (oui Unknown), length 300
11:13:58.923564 IP 192.168.27.14.bootps > 192.168.27.1.bootpc: BOOTP/DHCP, Reply, length 548
11:14:01.209488 ARP, Request who-has 192.168.27.14 tell 192.168.27.1, length 42
11:14:01.209946 ARP, Reply 192.168.27.14 is-at 00:07:cb:98:65:32 (oui Unknown), length 44

Ensuite, pour commencer à dialoguer, il y a un VPN d’établi entre le décodeur TV et la freebox :


11:14:01.210200 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x1): ESP(spi=0x0000271b,seq=0x1), length 72
11:14:01.211732 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x118): ESP(spi=0x00004e2b,seq=0x118), length 72
11:14:01.212824 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x2): ESP(spi=0x0000271b,seq=0x2), length 72
11:14:01.213608 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x3): ESP(spi=0x0000271b,seq=0x3), length 152
11:14:01.215043 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x119): ESP(spi=0x00004e2b,seq=0x119), length 72
11:14:01.219312 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x11a): ESP(spi=0x00004e2b,seq=0x11a), length 152
11:14:01.220364 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x11b): ESP(spi=0x00004e2b,seq=0x11b), length 312
11:14:01.220465 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x4): ESP(spi=0x0000271b,seq=0x4), length 72
11:14:01.231152 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x5): ESP(spi=0x0000271b,seq=0x5), length 72
11:14:01.232510 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x11c): ESP(spi=0x00004e2b,seq=0x11c), length 72
11:14:01.352712 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x6): ESP(spi=0x0000271b,seq=0x6), length 72
11:14:01.354105 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x11d): ESP(spi=0x00004e2b,seq=0x11d), length 72
11:14:01.355137 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x7): ESP(spi=0x0000271b,seq=0x7), length 72
11:14:01.355990 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x8): ESP(spi=0x0000271b,seq=0x8), length 392
11:14:01.357502 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x11e): ESP(spi=0x00004e2b,seq=0x11e), length 72
11:14:01.850201 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x11f): ESP(spi=0x00004e2b,seq=0x11f), length 104
11:14:01.851361 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x9): ESP(spi=0x0000271b,seq=0x9), length 72
11:14:01.864560 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x120): ESP(spi=0x00004e2b,seq=0x120), length 872
11:14:01.866326 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0xa): ESP(spi=0x0000271b,seq=0xa), length 72
11:14:01.870063 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x121): ESP(spi=0x00004e2b,seq=0x121), length 72
11:14:01.875969 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0xb): ESP(spi=0x0000271b,seq=0xb), length 72
11:14:01.877263 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x122): ESP(spi=0x00004e2b,seq=0x122), length 72
11:14:02.094029 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0xc): ESP(spi=0x0000271b,seq=0xc), length 72
11:14:02.095546 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x123): ESP(spi=0x00004e2b,seq=0x123), length 72
11:14:02.096599 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0xd): ESP(spi=0x0000271b,seq=0xd), length 72
11:14:02.097668 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0xe): ESP(spi=0x0000271b,seq=0xe), length 440
11:14:02.099356 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x124): ESP(spi=0x00004e2b,seq=0x124), length 72
11:14:02.189981 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x125): ESP(spi=0x00004e2b,seq=0x125), length 216
11:14:02.191142 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0xf): ESP(spi=0x0000271b,seq=0xf), length 72
11:14:02.191860 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x126): ESP(spi=0x00004e2b,seq=0x126), length 72
11:14:02.202238 IP 192.168.27.1 > 192.168.27.14: AH(spi=0x0000271a,seq=0x10): ESP(spi=0x0000271b,seq=0x10), length 72
11:14:02.203572 IP 192.168.27.14 > 192.168.27.1: AH(spi=0x00004e2a,seq=0x127): ESP(spi=0x00004e2b,seq=0x127), length 72
11:14:03.477395 IP 192.168.27.1 > 192.168.27.14: ESP(spi=0x0000271c,seq=0x1), length 104
11:14:03.509438 IP 192.168.27.14 > 192.168.27.1: ESP(spi=0x00004e2c,seq=0xe1), length 104
11:14:13.518657 IP 192.168.27.1 > 192.168.27.14: ESP(spi=0x0000271c,seq=0x2), length 104
11:14:13.551772 IP 192.168.27.14 > 192.168.27.1: ESP(spi=0x00004e2c,seq=0xe2), length 104
11:14:23.569733 IP 192.168.27.1 > 192.168.27.14: ESP(spi=0x0000271c,seq=0x3), length 104
11:14:23.601749 IP 192.168.27.14 > 192.168.27.1: ESP(spi=0x00004e2c,seq=0xe3), length 104
11:14:29.044994 IP 192.168.27.1 > 192.168.27.14: ESP(spi=0x0000271c,seq=0x4), length 88

Ayé, votre TV marche.



Comments are closed.