IPv6 zerhackt mir das www - Abhilfe?

Errorsmith

Kompiliertier
Moin

Ich stehe irgendwie grad vor dem Problem das das sich weiter verbreitende IPv6 mein normales surfen zerhackt.
Ich habe hier ein "normales" Netzwerk mit einer Router-Firewall auf der ein Squid läuft und dahinter diverse Clients. Da mein ISP kein IPv6 anbietet und das meiste im Netz "historisch" auf IPv4 läuft, verwende ich kein IPv6 sondern ausschließlich IPv4. Ich habe die Unterstützng dafür allerdings nicht im Kernel deaktiviert, da ich weiß das ich das irgendwann umstellen muß. Es ist lediglich kein IPv6 konfiguriert, weder auf den Netzwerkkarten, noch auf irgendwelchen Diensten im Netz.

Versucht nun ein Client eine Webseite aufzurufen bei der neben dem herkömmlichen A-Record auch ein AAAA Record hinterlegt ist, versuchen sowohl der Squid als auch der Client nicht reproduzierbar manchmal mit der IPv4, manchmal mit der anderen IPv6 Adresse Kontakt aufzunehmen. Spätestens auf dem externen Interface ist dann allerdings Schluß mit IPv6, ich habe ja wie gesagt nur eine IPv4 Adresse vom Provider bekommen. Der Client bekommt dann eine Fehlermeldung "Zielnetzwerk nicht erreichbar", die Seite muß dann mit F5 neu geladen werden, z.T. auch mehrmals.

Was ist hier der sinnvollste Weg das zu vermeiden? Ich kann nicht auf IPv6 umstellen (und wüßte auch nicht wie das gehen soll), habe aber trotz der halben Nacht googlen keinen Weg gefunden dem Squid das abzugewöhnen ohne ihn neu zu kompilieren. Die Clients umstellen kann ich nicht, es sind auch Mobilgeräte dabei bei denen das nicht geht.

Grüße,
errorsmith
 
In Firefox ist es am einfachsten, wenn du network.dns.disableIPv6 setzt. Das wird dem Squid aber wohl nicht helfen.
 
Ja, tut er. Nämlich genau das: Verbindung verweigert, Netzwerk nicht erreichbar.
Leider versucht er es nicht mit der IPv4 Adresse. Ich habe in squid.conf schon die Werte für forwar_max_tries und connect_retries angehoben sowie dns_v4_first auf "on" gesetzt. Ohne Erfolg.

@Yamagi: Das hilft dem Squid nicht und würde auch bei den anderen Clients nicht helfen (Android Geräte, andere Browser etc...)


Grüße,
errorsmith
 
Den hab ich auch gefunden. Ich habe das auch entsprechend konfiguriert:
Code:
tcp_outgoing_address 192.168.60.5
Leider brachte es nichts... Vermutlich geht das nicht mehr mit meiner Version.

Squid ist übrigens der da:
Code:
Squid Cache: Version 3.3.5
configure options:  '--with-default-user=squid' '--bindir=/usr/local/sbin' '--sbindir=/usr/local/sbin' '--datadir=/usr/local/etc/squid' '--libexecdir=/usr/local/libexec/squid' '--localstatedir=/var' '--sysconfdir=/usr/local/etc/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/var/run/squid/squid.pid' '--with-swapdir=/var/squid/cache/squid' '--enable-auth' '--enable-build-info' '--enable-loadable-modules' '--enable-removal-policies=lru heap' '--disable-epoll' '--disable-linux-netfilter' '--disable-linux-tproxy' '--disable-translation' '--enable-auth-basic=DB MSNT MSNT-multi-domain NCSA PAM POP3 RADIUS  fake getpwnam' '--enable-auth-digest=file' '--enable-external-acl-helpers=file_userip time_quota unix_group' '--enable-auth-negotiate=none' '--enable-auth-ntlm=fake smb_lm' '--enable-storeio=diskd rock ufs aufs' '--enable-disk-io=AIO Blocking DiskDaemon IpcIo Mmapped DiskThreads' '--enable-log-daemon-helpers=file' '--enable-url-rewrite-helpers=fake' '--disable-snmp' '--enable-ssl' '--with-openssl=/usr' '--enable-ssl-crtd' '--enable-htcp' '--disable-forw-via-db' '--enable-cache-digests' '--enable-wccp' '--enable-wccpv2' '--disable-ident-lookups' '--enable-eui' '--disable-ipfw-transparent' '--enable-pf-transparent' '--disable-ipf-transparent' '--enable-follow-x-forwarded-for' '--disable-ecap' '--enable-icap-client' '--disable-esi' '--enable-kqueue' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=i386-portbld-freebsd9.1' 'build_alias=i386-portbld-freebsd9.1' 'CC=cc' 'CFLAGS=-O2 -pipe -march=c3-2 -I/usr/include -fno-strict-aliasing' 'LDFLAGS= -pthread -Wl,-rpath=/usr/lib:/usr/local/lib -L/usr/lib' 'CPPFLAGS=' 'CXX=c++' 'CXXFLAGS=-O2 -pipe -march=c3-2 -I/usr/include -fno-strict-aliasing' 'CPP=cpp' --enable-ltdl-convenience

Die Maschine auf der das läuft ist ein VIA mit 512MB RAM und eine 8GB CF-KArte als Systemlaufwerk. Da möchte ich nicht unbedingt Squid neu bauen...

Grüße,
errorsmith
 
so:
Code:
# debug_options ALL,1 33,2

# hostname
visible_hostname fwgate.heimnet.localnet

# prefer ipv4
dns_v4_first on

# define local networks
acl localnet src 192.168.0.0/16

# configure allowed ports & options
acl SSL_ports port 443
acl Safe_ports port 80  # http
acl Safe_ports port 443  # https

acl CONNECT method CONNECT
acl httptraffic proto http
acl httpstraffic proto https

# disallow other than allowed ports
http_access deny !Safe_ports


# CONNECT only to SSL ports
http_access deny CONNECT !SSL_ports
# http_access allow CONNECT SSL_ports


# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager


# proxy ssl bypass
acl ssl-bypass dst 173.240.5.1
acl ssl-bypass dst 109.239.131.193
acl ssl-bypass dst 174.140.142.6
acl ssl-bypass dst 31.210.235.12
acl ssl-bypass dst 116.51.22.2

http_access allow localnet
http_access allow localhost
ssl_bump none ssl-bypass
ssl_bump server-first localnet
ssl_bump server-first localhost

# And finally deny all other access to this proxy
http_access deny all

http_port 192.168.200.1:3128
http_port 192.168.200.1:3129 intercept
https_port 192.168.200.1:3130 intercept ssl-bump generate-host-certificates=on cert=/usr/local/etc/ssl/ca.crt key=/usr/local/etc/ssl/ca.key dynamic_cert_mem_cache_size=4MB options=ALL

sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 8

# onyl show warning to the client if cert is invalid
sslproxy_cert_error allow all
sslproxy_cert_adapt setCommonName
# ssl::certDomainMismatch

cache deny all

coredump_dir /var/squid/cache/squid

# forward all request to this proxy (note: ssl bumping doesn't work with this)
cache_peer proxy.heimnet.localnet parent 3128 0 no-query name=proxyhttp
#cache_peer proxy.heimnet.localnet parent 3130 0 no-query name=proxyhttps
cache_peer_access proxyhttp allow httptraffic
#cache_peer_access proxyhttps allow httpstraffic
#cache_peer_access proxyhttps allow SSL_ports
never_direct allow httptraffic
#never_direct allow all

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:  1440  20%  10080
refresh_pattern ^gopher:  1440  0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0  0%  0
refresh_pattern .  0  20%  4320

# implement av scanning with squidclamav
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header X-Authenticated-User
icap_preview_enable on
icap_preview_size 1024
icap_service service_req reqmod_precache bypass=1 icap://192.168.60.5:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://192.168.60.5:1344/squidclamav
adaptation_access service_resp allow all

# try it more often to circumvent ipv6 problems
forward_max_tries 35
connect_retries 5

# errorpages
error_default_language de
err_page_stylesheet /usr/local/etc/squid/errorpage.css
error_directory /usr/local/etc/squid/errors/de

# logging
logfile_rotate 10

# transparent forwarding
forwarded_for transparent

Grüße,
errorsmith
 
Hmmm, k.A. - klingt etwas merkwürdig ... bei meinem kurzen drüberlesen auf den squid seiten zum thema ipv6 ist mir aufgefallen das angeblich squid automatisch merken sollte ohne großen Geschwindigkeitsverlust wenn ein Host nicht per IPv6 erreichbar ist. (Ich bin kein Squid admin oder FreeBSD nutzer ;) )

Könnte es sein das du diese Automatische Erkennung (Vermutlich ist die Automatische erkennung ein rel. Simpler "Ich erreichdich nicht per v6 ich versuchs sofort per v4) mit folgenden Optionen "Blockierst" und du dafür sorgts das er das zu oft probiert bevor er v4 versucht und das eher für instabile v6 Tunnel gedacht ist?

# try it more often to circumvent ipv6 problems
forward_max_tries 35
connect_retries 5
 
Moin Errorsmith,

hm. Bei mir funktioniert das mit
Code:
dns_v4_first on

einwandfrei. Allerdings verwende ich Squid 3.3.11. (Ich weiß, das ist auch nicht die aktuellste Version :D )
Code:
pkg info | grep squid
squid33-3.3.11   HTTP Caching Proxy

Vielleicht ist in der von Dir eingesetzten Version 3.3.5 ein Bug?

Grüßle

JueDan
 
Was erscheint bei der Ausgabe von ifconfig? Es kann IMHO nicht sein, dass IPv6 gesprochen wird/versucht wird, wenn es auf dem Interface nicht konfiguriert ist.

Rob
 
Wenn du: fbsd >= 9.2 hast, und offensichtlich Zitat "Spätestens auf dem externen Interface ist dann allerdings Schluß mit IPv6" doch ipv6 adressen hast, versuch mal:
´ ip6addrctl_policy="ipv4_prefer" ` in der rc.conf (default ist auto). Vielleicht mußt auch noch ´ ip6addrctl_enable="YES ` setzten.
Ansonsten laufen tunnel (z.B. sixxs) mittlerweile geschmeidig und geben Zugang. Dann natürlich wieder ´ ipv6_prefer ` .
Siehe man rc.conf(5) unter ip6addrctl_enable.
 
Hi!

Entschuldigt bitte die späte Antwort, hab auf Arbeit recht viel zu tun im Moment... :-(
Ok, der Reihe nach:

CommanderZed: Diese Optionen habe ich erst hinzugefügt als es nicht mehr funktioniert hat. Mein Ansatz war hier ihn zu zwingen auch die IPv4 Adressen zu probieren wenn die IPv6 fehlschlagen. Dies habe ich mittlerweile wieder entfernt und damit auf Standardeinstellung.

juedan:
Wie gesagt, bei mir funktioniert es nicht. Von einem Bug diesbezüglich habe ich nichts gefunden.

KobRheTilla: ifconfig sagt dies da:
Code:
root@igel:~ # ifconfig vlan200
vlan200: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:1b:21:11:8d:5f
        inet 192.168.200.1 netmask 0xffffff00 broadcast 192.168.200.255
        inet6 fe80::21b:21ff:fe11:8d5f%vlan200 prefixlen 64 scopeid 0xc
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 200 parent interface: em0

und das da steht in /etc/rc.conf:
Code:
ifconfig_vlan200="inet 192.168.200.1 netmask 255.255.255.0 vlan 200 vlandev em0"

Der Zeile nd6 options entnehme ich das IPv6 nicht konfiguriert ist, so wie ich es auch eingestellt habe.


metro:
Ich wüsste nicht wo ich IPv6 Adressen her haben sollte. Mein externes Interface ist definitv IPv4, mein Provider bietet kein echtes IPv6 an, nur so ein verkrüppeltes Dualstack Zeug mir einer Art NAT Gateway. Daher bin ich bei IPv4 geblieben. (Abgesehen davon das ich zuwenig Ahnung von IPv6 habe um das auf dem externen Interface laufen zu lassen.) Auf den internen Interfaces habe ich nichts mit IPv6 konfiguriert. Daher darf da garnichts mit IPv6 sein.
Einen Tunnel zu nutzen würde bedeuten (noch einem) Provider zu vertrauen. Da würde ich eher dazu tendieren auf einem Server den ich eh im RZ rumstehen habe einen eigenen Tunnel aufzusetzen. Ich hab mich aber damit noch nicht beschäftigt wie kompliziert das wäre.

Grüße,
errorsmith
 
Mach trotzdem mal, auf der Kiste hinter dem vlandevice und da wo der squid steht.
Der Respekt vor denjenigen, die grundsätzlich eher passiv an jedweder Kommunikation teilnehmen, ist verständlich, aber nicht ganz logisch.
Eigene Tunnel zum RZ sind gelegentlich nicht erwünscht und netflow wird das erkennen, aber kann auch gut gehen. Dann allerdings wird's etwas kompliziert, mit addresstranslation und gefrickel.
Der Tunnel ist wirklich das einfachste. Das hat aber sicher nix mit Vertrauen zu tun, egal bei wem. :cool:
 
OK, dann würde ich gern noch wissen, welche Version des Betriebssystems du benutzt und die Ausgabe folgender Befehle:

# ndp -a
# ndp -I (großes i)
# netstat -6rn

Rob
 
Hi

@metro: Das ist ein eigener privat gemieteter Server in einem RZ. Ich war davon ausgegangen das ich da (im legalen Bereich) tun und lassen kann was ich will, die AGB geben auch nichts her was in dieser Richtung untersagt wäre. Ich habe das Teil schon eine Weile, es war für ein kleines privates Projekt gedacht, steht aber nun relativ ungenutzt in der Gegend rum. Mir steht dort auch ein /64 Netz zur Verfügung mit dem ich bisher nicht wirklich was anfangen konnte. Insgesamt wäre das ja mal eine Gelegenheit sich damit auseinanderzusetzen.

@KobRheTilla:
Bitte sehr:

Code:
root@igel:~ # ndp -a
Neighbor  Linklayer Address  Netif Expire  S Flags
fe80::21b:21ff:fe11:8d5f%vlan60  00:1b:21:11:8d:5f vlan60 permanent R
fe80::21b:21ff:fe11:8d5f%vlan42  00:1b:21:11:8d:5f vlan42 permanent R
fe80::21b:21ff:fe11:8d5f%vlan41  00:1b:21:11:8d:5f vlan41 permanent R
fe80::21b:21ff:fe11:8d5f%vlan40  00:1b:21:11:8d:5f vlan40 permanent R
fe80::21b:21ff:fe11:8d5f%vlan200  00:1b:21:11:8d:5f vlan200 permanent R
fe80::21b:21ff:fe11:8d5f%em0  00:1b:21:11:8d:5f  em0 permanent R

root@igel:~ # ndp -I
No default interface.
Mein netstat unterstützt den Parameter "-6" nicht. Es gibt allerdings die Routingtabellen für Inet6 mit aus wenn ich diesen Parameter weglasse (die Routen für IPv4 hab ich weggelassen):
Code:
netstat -rn
Routing tables
<snip>
....
</snap>

Internet6:
Destination  Gateway  Flags  Netif Expire
::/96  ::1  UGRS  lo0
::1  link#10  UH  lo0
::ffff:0.0.0.0/96  ::1  UGRS  lo0
fe80::/10  ::1  UGRS  lo0
fe80::%em0/64  link#1  U  em0
fe80::21b:21ff:fe11:8d5f%em0  link#1  UHS  lo0
fe80::%lo0/64  link#10  U  lo0
fe80::1%lo0  link#10  UHS  lo0
fe80::%vlan200/64  link#12  U  vlan200
fe80::21b:21ff:fe11:8d5f%vlan200  link#12  UHS  lo0
fe80::%vlan40/64  link#13  U  vlan40
fe80::21b:21ff:fe11:8d5f%vlan40  link#13  UHS  lo0
fe80::%vlan41/64  link#14  U  vlan41
fe80::21b:21ff:fe11:8d5f%vlan41  link#14  UHS  lo0
fe80::%vlan42/64  link#15  U  vlan42
fe80::21b:21ff:fe11:8d5f%vlan42  link#15  UHS  lo0
fe80::%vlan60/64  link#16  U  vlan60
fe80::21b:21ff:fe11:8d5f%vlan60  link#16  UHS  lo0
ff01::%em0/32  fe80::21b:21ff:fe11:8d5f%em0  U  em0
ff01::%lo0/32  ::1  U  lo0
ff01::%vlan200/32  fe80::21b:21ff:fe11:8d5f%vlan200 U  vlan200
ff01::%vlan40/32  fe80::21b:21ff:fe11:8d5f%vlan40 U  vlan40
ff01::%vlan41/32  fe80::21b:21ff:fe11:8d5f%vlan41 U  vlan41
ff01::%vlan42/32  fe80::21b:21ff:fe11:8d5f%vlan42 U  vlan42
ff01::%vlan60/32  fe80::21b:21ff:fe11:8d5f%vlan60 U  vlan60
ff02::/16  ::1  UGRS  lo0
ff02::%em0/32  fe80::21b:21ff:fe11:8d5f%em0  U  em0
ff02::%lo0/32  ::1  U  lo0
ff02::%vlan200/32  fe80::21b:21ff:fe11:8d5f%vlan200 U  vlan200
ff02::%vlan40/32  fe80::21b:21ff:fe11:8d5f%vlan40 U  vlan40
ff02::%vlan41/32  fe80::21b:21ff:fe11:8d5f%vlan41 U  vlan41
ff02::%vlan42/32  fe80::21b:21ff:fe11:8d5f%vlan42 U  vlan42
ff02::%vlan60/32  fe80::21b:21ff:fe11:8d5f%vlan60 U  vlan60

Es handelt sich dabei um ein FreeBSD 9.1.

Grüße,
errorsmith
 
Versuche mal bitte in der /etc/sysctl.conf den Eintrag

net.inet6.ip6.auto_linklocal=0

und einen reboot.
Ich habe leider kein 9.1 zur Hand, um mal einen Vergleich anstellen zu können, eine 10.1 richtet z.B. keine link-local-Adressen ein, wenn überhaupt kein ipv6 konfiguriert wird. Eine 10.0 hingegen schon. Wenn du kein ipv6 brauchst, sind diese auch überflüssig.

Rob
 
Hi

Hab ich mal versucht, dann wurde aber das gesamt Netzwerk extrem langsam. Zumindest der Teil davon der über den Router läuft (Internet <--> LAN, Lan <--> DMZ, WLAN <--> LAN & Internet)

Ich habe das wieder rückgängig gemacht. Scheinbar braucht er die link-local Adressen für irgendwas.

Grüße,
errorsmith
 
Die linklocal-Adressen sind ausschließlich für IPv6 nötig. Ich wüsste nicht, warum das so drastische Auswirkungen auf das Netz haben sollte, wenn eh kein IPv6 gesprochen wird. Wie sieht denn die Ausgabe von ifconfig für em0 aus?

Nachtrag: versuchs mal mit

ipv6_network_interfaces="none"

in der rc.conf

Rob
 
Hi

Ich hab keine Ahnung was der Parameter bewirkt hat. (Was er tun soll ist mir durchaus klar).
Was tatsächlich passiert ist, war das ich nur sehr langsam Webseiten laden konnte, Squid eine Auslastung von "1.5" bei loadavg erzeugt hatte und ich auch mit ssh kaum noch drauf kam.
Entfernen des Parameters hat das Problem behoben.
Ich glaube langsam das das sinnvollste wäre die Kiste mal auf 10.1 zu heben und es dort nochmal zu versuchen.
Sobald ich rausgefunden habe wie ich auf einem anderen Rechner für die "fremde" Architektur kompiliere werde ich das wohl auch tun.

em0 sieht ansonsten (mit dem rückgängig gemachten Parameter) so aus:
Code:
root@igel:~ # ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether 00:1b:21:11:8d:5f
        inet6 fe80::21b:21ff:fe11:8d5f%em0 prefixlen 64 scopeid 0x1 
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

Den rc.conf Wert kann ich erst heute Abend testen, melde mich dann nochmal.

Grüße,
errorsmith
 
Zurück
Oben