nat funktioniert nicht immer.

hallole

Active Member
Hallo,

ich benutze OpneBSD schon seit Jahren in meinen Routern. Bisher immer ohne Pronbleme.
Da ich inzwischen von der teuren Standleitung auf das günstige SDSL umgestiegen bin, hatte ich einen neuen Rechner mit OpenBSD 4.3 aufgesetzt.
Funktioniert soweit auch prima.
Nun habe ich aber festgestellt, dass ich manche Internetseiten nicht öffnen kann.
z.B. http://82.149.225.22

Ich habe inzwischen folgendes festgestellt:

Wenn ich direkt vom Router aus auf die Seite gehe, dann klappts:

lynx http://82.149.225.22

Wenn ich das gleiche von einem Linuxrechner aus dem lokalen Netz mache (also über nat), dann geht's nicht:

lynx http://82.149.225.22

"HTTP request sent; waiting for response."


Und es kommt einfach keine Antwort.
Hier ein tcpdump vom OpenBSD router (lynx auf dem lokalen Linuxrechner gestartet)
Code:
~ # tcpdump -n host 82.149.225.22
tcpdump: listening on rl0, link-type EN10MB
11:57:31.373625 10.0.0.112.1125 > 82.149.225.22.80: S 3967046169:3967046169(0) win 5840 <mss 1460,sackOK,timestamp 1079963379 0,nop,wscale 0> (DF)
11:57:31.400841 82.149.225.22.80 > 10.0.0.112.1125: S 2126367869:2126367869(0) ack 3967046170 win 5792 <mss 1460,sackOK,timestamp 1506276410 1079963379,nop,wscale 7> (DF)
11:57:31.401000 10.0.0.112.1125 > 82.149.225.22.80: . ack 1 win 5840 <nop,nop,timestamp 1079963381 1506276410> (DF)
11:57:31.413649 10.0.0.112.1125 > 82.149.225.22.80: P 1:668(667) ack 1 win 5840 <nop,nop,timestamp 1079963383 1506276410> (DF)
11:57:31.444333 82.149.225.22.80 > 10.0.0.112.1125: . ack 668 win 56 <nop,nop,timestamp 1506276422 1079963383> (DF)

Das seltsame ist, dass ich vom Linux-Rechner per Telnet eine HTTP-Antwort erhalte (wenn auch eine Fehlermeldung). Ich habe einfach zwei mal enter gedrückt:

Code:
~ # telnet 82.149.225.22 80
Trying 82.149.225.22...
Connected to 82.149.225.22.
Escape character is '^]'.


HTTP/1.0 400 Bad Request
Connection: close
Content-Type: text/html
Content-Length: 349
Date: Thu, 13 Nov 2008 11:00:37 GMT
Server: administrator-technology-httpd

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>400 - Bad Request</title>
 </head>
 <body>
  <h1>400 - Bad Request</h1>
 </body>
</html>
Connection closed by foreign host.

Wenn ich im telnet statt zwei mal enter folgendes eingebe, dann hängts (nichts passiert):
Code:
GET / HTTP/1.0
Connection: close
Accept: text/html

Habe inzwischen absolut keine Idee mehr, woran's liegen kann.;'(
Es ist auch nicht so, dass alle http requests nicht funktionieren, sondern es geht nur bei manchen Servern nicht,
obwohl http ja - zumindest für den Router - nicht besonders anspruchsvoll ist (oder gibt's etwa doch sowas wie passive-http :confused:).
Dieses Forum hier konnte ich z.B. problemlos anschauen.


Ach ja. hier noch meine pf.conf:
Code:
ext_if="pppoe0"
int_if="rl0"
network="10.0.0.0/8"

nat on $ext_if from $int_if:network -> ($ext_if:0)
pass in
pass out

und hier mein ifconfig:
Code:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33208
        groups: lo
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:30:4f:0a:ef:e8
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
        inet6 fe80::230:4fff:fe0a:efe8%rl0 prefixlen 64 scopeid 0x1
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:30:4f:0a:f3:72
        media: Ethernet autoselect (10baseT half-duplex)
        status: active
        inet6 fe80::230:4fff:fe0a:f372%rl1 prefixlen 64 scopeid 0x2
enc0: flags=0<> mtu 1536
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
        groups: pflog
pppoe0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1492
        dev: rl1 state: session
        sid: 0xa9b PADI retries: 1 PADR retries: 0 time: 00:53:30
        sppp: phase network authproto pap authname "?????????????????@t-online-com.de"
        groups: pppoe egress
        inet6 fe80::230:4fff:fe0a:efe8%pppoe0 ->  prefixlen 64 scopeid 0x6
        inet ???.???.???.??? --> ???.???.???.??? netmask 0xffffffff
tun1: flags=9943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,LINK0,MULTICAST> mtu 1500
        lladdr 00:bd:98:47:8c:02
        inet6 fe80::2bd:98ff:fe47:8c02%tun1 prefixlen 64 scopeid 0x8
bridge0: flags=41<UP,RUNNING> mtu 1500
        groups: bridge

Bin für jeden Tip dankbar.

Gruss ... Markus
 
Ich bin nicht ganz sicher, aber SDSL ist doch ADSL sehr aehnlich, nur dass die Up- und Downstream identisch sind, oder?

Falls dem so ist, wuerde ich mal die Option 'scrub' anschauen, um den maximalen MSS-Wert anzupassen. Hab hier mit ADSL sowas in der /etc/pf.conf.

Code:
scrub in all random-id no-df max-mss 1440

Dafuer spricht zumindest, das manche Seiten funktionieren und manche nicht.

HTH
 
Danke !!!

@xbit: Ja SDSL ist die symmetrische Variante vom ADSL.

Es funktionieren beide Varianten (von xbit und auch von oenone).
Vielen Dank für Eure Hilfe.

Was genau passiert denn da ?
Ich finde in der Doku leider nur:

max-mss num
Erzwingt eine maximale Maximum Segment Size (MSS) in TCP-Paket-Headern.

Versteht man darunter, dass ein IP-Paket von z.B. 2000 Byte in zwei kleinere Pakete fragmentiert wird, da es sonst nicht durch meine Leitung "passt" ?
Macht das nicht die MTU ?
Meine MTU-Werte sind:
rl1 (dort hängt das DSL-Modem dran): 1500
pppoe0: 1492

Warum muss ich denn das Ganze nochmal auf 1400 begrenzen ?
Bei mir funktionierten übrigens max-mss-Werte bis 1452. Ab 1453 ging's dann nicht mehr (zumindest beim connect zu 82.149.225.22).

Gruss ... Markus
 
Du packst IP Pakete in PPP Pakete und wenn Deine MTU im Netzwerk 1500 ist, sind Deine Pakete fuer die DSL Leitung zu gross. Mit diesem Schalter erzwingst Du kleinere IP Pakete, so dass die Pakete, die ueber die DSL Leitung gehen, wieder innerhalb der 1500 Bytes liegen.
 
Ich glaube, hotmail macht da auch Probleme... Zumindest war das der Grund, warum sich bei mir einer der Nutzer beschwert hatte.
 
Zurück
Oben