[netwerk configuratie]detecteren of ik thuis ben

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Met behulp deze handleiding heb ik mijn laptop en mijn home server zo geconfigueerd dat ik mijn uitgaande mail vanaf mijn laptop altijd kan versturen via de smtp server van mijn isp.
Hier zit nog een complicatie bij: het ip adres waarop ik mijn home server kan bereiken is 192.168.0.254 als ik thuis ben en xxx.xxx.xxx.xxx als ik ergens anders ben. Ik laat daarom mijn inetd.conf verwijzen naar een hostname 'mailhost'. Met behulp van een script in /etc/network/if-up.d maak ik in /etc/hosts een verwijzing naar het juiste ip adres. Het komt er op neer dat als de naam van het interface dat op komt 'wlan0' is en de SSID van het wlan 'MijnSSID' is ik 192.168.0.1 in mijn host file zet, anders het externe ip van mijn router (die poort 22 forward naar mijn server, ik heb een statisch ip).
Het script is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

logger -i "running  mailhost script"

# remove the existing mailhost lines
sed '/.*mailhost$/ d' /etc/hosts > /etc/newhosts
mv /etc/newhosts /etc/hosts

# quit if we are not configuring wlan0
if [ $IFACE = "wlan0" ]; then
    logger -i "configuring wlan0, retrieving SSID"
    # find out the identity of the local wlan
    SSID=$(iwconfig wlan0 | grep -o "ESSID:\".*\"" | cut -f 2 -d "\"")
fi


if [ $IFACE = "wlan0" ] && [ $SSID = "MijnSSID" ]; then
    logger -i "configuring mail host for home"
    echo -e "192.168.0.1\tmailhost" >> /etc/hosts
else
    logger -i "configuring mail host for out"
    echo -e "my.external.ip.number\tmailhost" >> /etc/hosts
fi

Dit werkt, maar is niet waterdicht. Stel dat ik mijn laptop thuis via ethernet aansluit (want grote file transfer naar mijn server), dan werkt het niet. Of als wlan0 plotseling wlan1 wordt.
De elegantste methode die ik heb kunnen bedenken is detectie van het mac adres van je router. Maar dat is vrij traag. De commando's
code:
1
2
route | grep default | cut etc etc
arp 192.168.0.1| cut etc etc

zijn allebei nogal traag (waarom?) Heeft iemand een beter idee om te detecteren of je laptop verbonden is met je thuisnetwerk?

Acties:
  • 0 Henk 'm!

  • Sallin
  • Registratie: Mei 2004
  • Niet online
Ik gebruik het volgende stukje code om te kijken of mijn netwerkdrive gemount is. Zo niet dan draait het script niet. Ik weet niet of je ook folders van je home server mount, maar als je dat standaard doet, dan kan dit je misschien helpen.
Bash:
1
2
3
4
5
6
7
#!/bin/bash
/bin/grep /media/foo /etc/mtab > /dev/null
if [ $? == 0 ]; then
/usr/bin/nice /usr/bin/rsnapshot weekly
else
echo 'Error: Target directory not mounted'
fi

This too shall pass
Debian | VirtualBox (W7), Flickr


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Router met NAT loopback geen optie?

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Exhar
  • Registratie: Februari 2007
  • Niet online
Sir Isaac schreef op woensdag 03 oktober 2012 @ 00:30:
[...]
De elegantste methode die ik heb kunnen bedenken is detectie van het mac adres van je router. Maar dat is vrij traag. De commando's
code:
1
2
route | grep default | cut etc etc
arp 192.168.0.1| cut etc etc

zijn allebei nogal traag (waarom?) Heeft iemand een beter idee om te detecteren of je laptop verbonden is met je thuisnetwerk?
Dat is het eerste waar ik aan dacht. De traagheid komt mogelijk door resolving.

man arp
arp -n 192.168.0.1

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Daar hebben ze het package 'guess-net' voor uitgevonden. Duidelijke documentatie is beschikbaar en voorbeeldscripts. Daarmee kan je je actieve interface achterhalen, wat je gateway is, de MAC adressen van bepaalde machines en daar configuratie op aanpassen. Een van de ideeën erachter was dat je op de ene locatie vaste IP adressen gebruikt, en op de andere DHCP. Je kan er ook je hosts file mee aanpassen.

Enne, je wlan0 wordt niet 'spontaan' wlan1 als je er maar geen andere wifi kaart in steekt, En anders is 't ook zo verandert door de udev rules aan te passen.

Btw, voor je script, je gebruikt sed om een nieuw bestand te maken, die je vervolgens over het origineel heen schrijft via mv. Waarom geen sed -i om het 'in place' aan te passen? Heb je geen tragere mv bij.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
@Tsurany: zou mooi zijn, maar dat ondersteunt mijn modem niet. Het schijn dat je het vanaf de console op het modem (daar kan ik bij) kan regelen met iptables, maar daar ben ik geen held in.

@Exhar. Resolven van je default route zou toch niet zo lang mogen duren? Het lijkt met dat de kernel gewoon weet waar hij niet lokaal netwerkverkeer naar toe moet sturen.

@HOT. H'm ik heb het wiel uitgevonden, guessnet is vast een mooier wiel, maar dit werkt nu ook en is lekker simpel. Het scenario extra wlan adapter is idd niet zo waarschijnlijk.
sed -i had ik gevonden, maar blijkbaar verkeerd gedaan (met > /ets/hosts erachter). Als ik dat weg laat die ie het wel. Over de snelheid van mv maak ik me geen zorgen, maar sed -i is in dit geval wel eleganter.

[ Voor 3% gewijzigd door Sir Isaac op 03-10-2012 12:08 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Als ik mij vanavond wat verveel, zal ik eens kijken naar je script en 't verbeteren waar ik kan. Vind ik wel leuk om te doen. Installeer ondertussen even arp-scan, want die ga ik zeer zeker gebruiken om te kijken of je server beschikbaar is (of router, net wat je wilt ;)).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 01-10 15:44
Wat ook zou kunnen is dat je een dyndns adres gebruikt voor jouw externe IP adres, en dat je deze hostname als lokaal ipadres toevoegt aan jouw thuisnetwerk dhcp-server... (Dat is hoe ik het thuis doe.)

Trouwens, als aanvulling op Exhar, (ook) `route` is zo traag, omdat deze de ipadressen (van alle routes) probeert te resolven. `route -n` werkt veel sneller, je kunt dan niet "default" gebruiken, het wordt dan iets als:
code:
1
route -n|grep -e '^0\.0\.0\.0'|cut ...

Andere mogelijkheden zijn om "ip route list match 0.0.0.0" te gebruiken of iets op basis van "ip neigh show".

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 08:36
Heb je niet gewoon een authenticated SMTP account?

Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 18:55

Kees

Serveradmin / BOFH / DoC
Sir Isaac schreef op woensdag 03 oktober 2012 @ 00:30:
De elegantste methode die ik heb kunnen bedenken is detectie van het mac adres van je router. Maar dat is vrij traag. De commando's
code:
1
2
route | grep default | cut etc etc
arp 192.168.0.1| cut etc etc

zijn allebei nogal traag (waarom?) Heeft iemand een beter idee om te detecteren of je laptop verbonden is met je thuisnetwerk?
Dat is ook de beste methode denk ik. Maar dat kan veel eenvoudiger:
code:
1
2
3
4
5
6
if ip neigh | grep -q "mac-adres-van-je-router REACHABLE"
then
    echo "ik ben thuis"
else
    echo "waar ben ik?"
fi
Het macadres van je router zal vrijwel altijd in je arp tabel staan, helemaal als je afentoe wat verkeer hebt. Mocht ik dat fout hebben, dan kun je een eenvoudige ping ervoor gooien alla 'ping -c1 -q 213.239.154.20' (=tweakers.net)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • MegaTronics
  • Registratie: Januari 2004
  • Laatst online: 03-12-2021

MegaTronics

Chef WiFi Kabels

Tsurany schreef op woensdag 03 oktober 2012 @ 07:55:
Router met NAT loopback geen optie?
Dit dus.

Vroeger, toen de Batavieren nog met zijn vijven waren.


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Kun je niet gewoon inloggen op de smtp van je provider ? zodat die je toestaat mail te relayen.
Welke provider heb je eigenlijk ?

Anders draai gewoon zelf een smtp op je thuisservertje en log daar op in met laptop en laat je server relayen

[ Voor 46% gewijzigd door Fish op 03-10-2012 19:15 ]

Iperf


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

fish schreef op woensdag 03 oktober 2012 @ 19:12:
Kun je niet gewoon inloggen op de smtp van je provider ? zodat die je toestaat mail te relayen.
Welke provider heb je eigenlijk ?

Anders draai gewoon zelf een smtp op je thuisservertje en log daar op in met laptop en laat je server relayen
Daarvoor moet je in het netwerk van de ISP zijn. Als je bij Ziggo zit, mag je niet vanaf een UPC verbinding relayen via Ziggo ;).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

daarom ook inloggen -> authenticated smtp / SMTP AUTH

maar ja niet iedereen onder steund SMTP AUTH

[ Voor 36% gewijzigd door Fish op 03-10-2012 19:23 ]

Iperf


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Werkt ook niet altijd. Toegang wordt gewoon geweigerd, ongeacht de authenticatie.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

niet perse .. maar whatever als jij vind van wel, best.

Iperf


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Het gaat erom dat hij z'n eigen interne mailserver kan gebruiken. Laten we hem dan daar mee helpen. Jij zou ook deze moeite doen, als je een eigen mailserver zou draaien met je eigen domeinnaam, maar via je ISP moet relayen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

klopt, ik heb ook een mailserver draaien ja en mijn nat loopback werkt wel.
Maar als dat niet had gewerkt had ik geprobeert zoals ik heb gessugereerd

Maar om gewoon stellig te zeggen dat het niet gaat werken authenticated of niet vind ik niet kunnen. je kan het gewoon proberen.

Iperf


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 02-10 08:45
NAT loopback is toch iets wat je router moet regelen? Niet je modem...

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Sir Isaac:
Voldoet dit naar je wens? Geen extra software nodig btw, arp-scan is toch niet zo geweldig als ik dacht, hoewel het de boel wel iets makkelijker kan maken.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

logger -i "running  mailhost script"

# remove the existing mailhost lines
sed -i '/.*mailhost$/ d' /etc/hosts

# Get the default gateway
gateway=$(route -n | grep '0.0.0.0' | cut -d ' ' -f 10)

# Ping the gateway to get it in the ARP cache
ping -c1 -q $gateway > /dev/null

# Get the MAC address of the default gateway
gwmac=$(arp -n | grep $gateway | cut -d 'r' -f 2 | cut -d ' ' -f 4)

# Check if the MAC address is mine
if [ $gwmac == "je router MAC" ] ; then
    logger -i "Setting mail host"
    echo "192.168.0.1 mailhost" >> /etc/hosts
fi

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Beste mensen, wat een boel reacties.
@Megatronics & mcDavid. Mijn modem/router, een Siemens SX762, ondersteunt geen loopback routing. Als iemand weet hoe je dat met iptables kun regelen is dat een alternatie voor mijn script en alle evoluties die hierboven staan.

@fish & dljuc. Ik zit bij inter.nl.net. Voordeel is dat je een statisch ip adres hebt, maar geen smtp auth. Vandaar dat ik mail wil verzenden mbv een ssh tunnel op mijn interne server (configuratie inet -> modem/router NAT -> server)

De optie van 'ip neigh' van Elijan en Kees is een mooie manier om achter de mac adressen te komen. De man page van ip is sowieso erg leerzaam. Echt een swiss army knife.
Het script van Hero is lekker robuust. Alleen ga ik de route -n vervangen door ip route en de arp door 'ip neigh'.

Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Sir Isaac schreef op woensdag 03 oktober 2012 @ 20:58:


@fish & dljuc. Ik zit bij inter.nl.net. Voordeel is dat je een statisch ip adres hebt, maar geen smtp auth. Vandaar dat ik mail wil verzenden mbv een ssh tunnel op mijn interne server (configuratie inet -> modem/router NAT -> server)
mmmm

http://www.internl.net/im...mail_windows_inn_imap.pdf
Server voor uitgaande e-mail vereist verificatie vinkt u aan!
220 smtp20.nijmegen.internl.net ESMTP sendmail 8.13.8/2.04 ready at Wed, 3 Oct 2
012 21:32:24 +0200 (CEST)
ehlo woei.com
250-smtp20.nijmegen.internl.net Hello ...ftth.xms.internl.net [85.], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 45000000
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
auth plain
334
je grootste probleem is dat hij natuurlijk op 25 draaid wat de meeste blokkeren :P
ff kijken of ik een andere poort kan vinden

jah poort smtp5.inter.nl.net poort 587
probeert het eens

[ Voor 9% gewijzigd door Fish op 03-10-2012 21:44 ]

Iperf


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Sir Isaac schreef op woensdag 03 oktober 2012 @ 20:58:
De optie van 'ip neigh' van Elijan en Kees is een mooie manier om achter de mac adressen te komen. De man page van ip is sowieso erg leerzaam. Echt een swiss army knife.
Het script van Hero is lekker robuust. Alleen ga ik de route -n vervangen door ip route en de arp door 'ip neigh'.
Ik houd van robuuste scripts, ze moeten hoe dan ook werken, ongeacht de omgeving. Ik heb ook gekeken naar ip neigh en ip route, maar ik vond ze niet zo 'robuust' als je zou willen. Dan kan je beter arp-scan parsen. Die geeft een MAC adres terug voor het IP adres dat je opgeeft. Geen antwoord is geen MAC. Je kan er ook hele IP reeksen mee scannen, ongeacht je eigen adres. Dan heb je zoiets als dit bijvoorbeeld, om je server te scannen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

logger -i "running  mailhost script"

# remove the existing mailhost lines
sed -i '/.*mailhost$/ d' /etc/hosts

# Get the MAC address of the mail server
mac=$(arp-scan 192.168.0.254 | grep 192.168.0.254 | cut -f 2)

# Check if the MAC address is mine
if [ $mac == "server MAC" ] ; then
    logger -i "Setting mail host"
    echo "192.168.0.1 mailhost" >> /etc/hosts
fi


Toch nog arp-scan gebruikt :). Als je 't zelf wilt testen met arp-scan, dan moet je het via root (sudo) uitvoeren, of SUID root maken.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Hero Of Time schreef op woensdag 03 oktober 2012 @ 19:53:
code:
1
2
3
4
#!/bin/bash
...
# Get the default gateway
gateway=$(route -n | grep '0.0.0.0' | cut -d ' ' -f 10)
Dit zal in sommige gevallen niet gaan werken. Ik draai mijn Linux bijvoorbeeld in een vbox met 2 (virtuele) netwerkkaarten: een host-only en een NAT. In dat geval geeft /sbin/route -n de volgende output:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.2.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     1      0        0 eth1
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0

waar 0.0.0.0 dus in elke regel voorkomt.
Je kunt beter met awk expliciet matchen op de Destination-kolom:
code:
1
2
3
#!/bin/bash
...
gateway=$(/sbin/route -n | awk '$1=="0.0.0.0"{print$2}')

(scheelt ook weer in het spaties tellen ;) )

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Owja, awk heb je ook nog 8)7. Die moet ik echt vaker gaan gebruiken. Maar als je zoals jij meerdere keren 0.0.0.0 hebt, kan je ook via grep -e '^0.0.0.0' werken.

Ik zie nu op m'n laptop op werk, dat ik 3x 0.0.0.0 heb (2x op 1 lijn):
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.80.1    0.0.0.0         UG    0      0        0 eth0
192.168.80.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

Heb ik thuis niet, vandaar m'n 'fout'.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 01-10 15:44
sam.vimes schreef op donderdag 04 oktober 2012 @ 09:30:
[...]

Dit zal in sommige gevallen niet gaan werken. Ik draai mijn Linux bijvoorbeeld in een vbox met 2 (virtuele) netwerkkaarten: een host-only en een NAT. In dat geval geeft /sbin/route -n de volgende output:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.2.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     1      0        0 eth1
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0

waar 0.0.0.0 dus in elke regel voorkomt.
Sterker nog, 10.0.0.0 zou hier bijvoorbeeld ook matchen. Daarom gebruikte ik:
code:
1
grep -e "^0\.0\.0\.0"
De "." is trouwens een wildcard in grep, al maakt het hier niet echt uit omdat er geen mogelijkheden zijn dat het in de weg staat...

Maar awk is inderdaad veel geschikter... :)

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic

Pagina: 1