Ik zit met het volgende:
een systeem met daarop 3 LANs, elke LAN heeft 2 NICs die via bonding elkaar geschakelt zijn. We hebben dus netwerk bond0, bond1 en bond2.
Nu zitten er op LAN bond1 encapsulated data dmv het L2TP protocol. Deze data kan ik zien langskomen met tcpdump -i bond1 en de L2TP paketten worden verstuurd door een router mbv IP multicast adressen.
Nu moet ik op de server deze L2TP paketten omzetten naar standaard UDP/IP paketten. Het komt er op neer dat ik de L2TP paketten moet uitlezen en de data die erin zit weer versturen op hetzelfde LAN in UDP/IP multicast.
Om de data uit de L2TP paketten te halen gebruik ik een RAW socket:
Ik krijg packets binnen die ik kan verwerken, maar lang niet allemaal: ik krijg alleen maar packets van 1 multicast adres, niet van andere multicast adressen.
Als ik de socket ook nog eens bind aan het LAN waar de L2TP data opzit, krijg ik helemaal niks binnen:
Dus zit ik met volgende vragen:
Linux versie: Oracle Linux 7.5
een systeem met daarop 3 LANs, elke LAN heeft 2 NICs die via bonding elkaar geschakelt zijn. We hebben dus netwerk bond0, bond1 en bond2.
Nu zitten er op LAN bond1 encapsulated data dmv het L2TP protocol. Deze data kan ik zien langskomen met tcpdump -i bond1 en de L2TP paketten worden verstuurd door een router mbv IP multicast adressen.
Nu moet ik op de server deze L2TP paketten omzetten naar standaard UDP/IP paketten. Het komt er op neer dat ik de L2TP paketten moet uitlezen en de data die erin zit weer versturen op hetzelfde LAN in UDP/IP multicast.
Om de data uit de L2TP paketten te halen gebruik ik een RAW socket:
Python:
1
2
3
4
5
| try: l2tp_sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0003)) except socket.error: print "RAW Socket could not be created." sys.exit() |
Ik krijg packets binnen die ik kan verwerken, maar lang niet allemaal: ik krijg alleen maar packets van 1 multicast adres, niet van andere multicast adressen.
Als ik de socket ook nog eens bind aan het LAN waar de L2TP data opzit, krijg ik helemaal niks binnen:
Python:
1
2
3
4
5
| try: l2tp_sock.bind(('bond1',0)) except socket.err: print "Error in binding raw socket to bond1" sys.exit() |
Dus zit ik met volgende vragen:
- Waarom krijg ik niet alle L2TP data binnen?
- Waarom krijg ik helemaal niks binnen als ik de raw socket met het LAN bond1 bindt, waar de L2TP data op staat?
Linux versie: Oracle Linux 7.5
For it is the doom of men that they forget... Huidige en vroegere hardware specs The Z80 is still alive!