OVH Community, your new community space.

Frage: IpV6 FreeBSD / JAILS


AnimaTow
01.09.13, 20:55
nein ich habe nicht nur eine eine ipv6 - /64 Netz
nein ich möchte mich nicht verstecken...
ich wollte nur nicht auf jeder jail eine Firewall einsetzen...

inzwischen habe ich es zwar alles direkt eingebunden, und einige firewalls schon eingerichtet, aber interessant würde ich es immer noch finden ipv6 zu NATen..
wenn ich jetzt eine Dienst auf IpV6 benötige auf zwei JAils.. ist das jetzt nicht so mehr möglich, den muss ich schonwieder zwei ipv6 adressen benutzen..

darum war eigentlich immer meine idee
alle Jails haben eine Interne Ipv6 und den rest hätte ich den über die firewall da hingeleitet wo ich es auch immer brauche..


ok mit den mehreren firewalls habe ich vieleicht was nicht verstanden

ich habe bei mir in der base
Code:
block on em0
doch sind die ports in den jails üver ipv6 ereichbar, ohne das ich ports in der base fiirewall geöffnet habe...

uisge
01.09.13, 19:50
Zitat Zitat von AnimaTow
kann mir einer ein Grund geben damit ich es zumindest weiss warum man ipv6 nicht NATen soll, was ich eigentlich für Quatsch halte, ein Normaler Home Router NATet auch IPv6, da ensteht immer wider die frage WARUM NICHT NATen ??
Laß mich mal die Frage umdrehen: Warum möchtest Du NAT bei IPv6-Adressen?

-) Hast Du nur eine? Dann könnte man es verstehen.
-) Hast Du ein /64-Netz, dann werden Dir die IPv6-Adressen in Deinem Leben niemals ausgehen ;-)
-) Möchtest Du Dich "verstecken"?

uisge
01.09.13, 16:43
Zitat Zitat von AnimaTow
wäre natürlich schöner nur eine firewall zu benutzen als auf jeder jail mit ipv6 nochmal eine firewall nur für ipv6...
Hmm, irgendwie verstehe ich diesen Punkt nicht: Warum schreibst Du von mehreren Firewalls?

Code:
IPv4: [WWW] <--> Firewall:[em0/123.123.123.123] <-- pass in und out/nat/rdr --> [jail/10.0.0.1]
IPv6: [WWW] <--> Firewall:[em0/2001:dead:beaf::1] <-- pass in und out --> [jail/2001:dead:beaf::1]
Das ist doch nur eine einzige Firewall, die den ein- und ausgehenden Verkehr auf dem externen Interface (em0) überwacht/steuert.

Der Unterschied zwischen IPv4 und IPv6 ist doch lediglich, daß Du gezwungen bist, zwischen der extern bekannten 123.123.123.123 und der dem Jail zugeordneten 10.0.0.1 zu übersetzen (NAT). Im Falle von 2001:dead:beef::1 brauchst Du keine Übersetzung mehr, da diese IPv6 von außen (em0) und von innen in Deinem Jail (ebenfalls em0) erreichbar ist. Die Firewall kontrolliert dann den ein- und ausgehenden Verkehr mittels pf-Regeln ausschließlich auf dem externen Interface (em0), ergo: eine einzige Firewall.

Es kann sein, daß ich Dich aber auch einfach nur gänzlich falsch verstehe.

Edit: Oder aber: hast Du nur eine einzige IPv6-Adresse bekommen?

AnimaTow
31.08.13, 23:58
also ohne nat geht das ja auch bestens, aber es muss doch auch gehen ipv6 über nat rein und raus zu bekommen..

hier mal die logs was passiert


tcpdump bei wget ipv6.google.com
Code:
00:20:45.218816 IP6 2001:41d0:1:5788::11.54243 > par03s12-in-x12.1e100.net.http: Flags [S], seq 3778281342, win 65535, options [mss 1440,nop,wscale 6,sackOK,TS val 3928168 ecr 0], length 0
pflog bei wget ipv6.google.com
Code:
all tcp 2001:41d0:1:5788::11[60618] (fec0:0:0:5::2[53370]) -> 2a00:1450:4007:805::1012[80]       SYN_SENT:CLOSED
vieleicht hat ja doch noch einer eine lösung zum problem, wäre natürlich schöner nur eine firewall zu benutzen als auf jeder jail mit ipv6 nochmal eine firewall nur für ipv6...

ich wäre mit der nat lösung schon viel glücklicher..


PS:
Mir wird immer wider vom NATen von IPv6 abgeraten.. aber keiner kann mir dazu ein grund geben.. kann mir einer ein Grund geben damit ich es zumindest weiss warum man ipv6 nicht NATen soll, was ich eigentlich für Quatsch halte, ein Normaler Home Router NATet auch IPv6, da ensteht immer wider die frage WARUM NICHT NATen ??

BSD FORUM USER: TCM
Nevermind, ich kommt mit rulesets ohne quick nicht klar
Meine antwort:
Zitat von d31m0
moment der hat "Nevermind, ich kommt mit rulesets ohne quick nicht klar" geschrieben?

ne schreib da nochmal rein das der post wieder oben ist. das war irgend nen depp
wenn der mit rulesets ohne quick nicht klar kommt, kommt der mit 98% aller firewalls nicht klar
BSD FORUM USER: TCM
Zuerst mal würde ich ganz dringend aufhören, IPv6 zu NATen.
meine antwort:

Hi sag mir doch mal warum ich es nicht NATen soll ?

ich will ipv6 NETen da ich keine lust habe auf jeder jail noch eine extra firewall zu verwallten.. natürlich ist es so ohne probleme möglich ipv6 direkt in die jail zu linken..

aber ich würde das lieber alles über eine firewall einrichten und nicht über 14 firewalls !!

natürlich ist es recht einfach ne pf für die jails einzurichten.. aber wie ich schon gesagt habe 14 firewalls auf einem server finde ich schon etwas übel, 1x base 13 jails und das nur für ipv6

es muss doch auch möglich sein die ipv6 zu NETen, ich habe zwar momentan alles direkt eingebunden, wäre aber glücklicher mit dem NATen, und wenn es nicht möglich ist wäre es vieleicht Cool zu wissen warum es nicht so einfach möglich ist.. ein normaler Router kann das doch auch warum soll das nicht auch mein server können ?

uisge
31.08.13, 22:19
Zitat Zitat von AnimaTow
ok ich habe es jetzt mal direkt eingebunden, jetzt scheint es zu gehen aber schade das ich das mit dem nat nicht hinbekomme sollte einer doch noch eine lösung kennen wäre ich sehr dankbar...
Ich hatte anfangs auch Probleme mit dem Akzeptieren, daß NAT mit IPv6 eigentlich Geschichte ist, nach all den vielen Jahren des NAT/IPv4 ;-)

Aber ich habe mich überzeugen lassen, daß das nicht mehr nötig ist bei FBSD/Jails (und auch sonst).

In meiner pf.conf findet sich dann auch nur noch:

Code:
extIF="em0"  # external ethernet interface
ip6www="2001:dead:beaf::1"
block in on $extIF all
pass in log on $extIF inet6 proto tcp from any to $ip6www port 80
Das reicht IMHO völlig aus. NAT habe ich natürlich auch, aber nur für IPv4. Aber auch hier ohne ein geklontes Interface.

Viel Glück beim weiteren Setup!

AnimaTow
31.08.13, 18:36
ok ich habe es jetzt mal direkt eingebunden, jetzt scheint es zu gehen

Code:
Connection to 2001:4860:4860::8888 53 port [tcp/domain] succeeded!
root@web1:/root # nc -6uvw 1 2001:4860:4860::8888 53
Connection to 2001:4860:4860::8888 53 port [udp/domain] succeeded!
aber schade das ich das mit dem nat nicht hinbekomme sollte einer doch noch eine lösung kennen wäre ich sehr dankbar...

uisge
31.08.13, 18:17
Zitat Zitat von AnimaTow
Hallo ich versuche seit einiger zeit schon auf meinen Jails ipv6 zu nutzen, nur leider scheine ich irgendwas nicht zu verstehen, vielleicht kann mir einer ja helfen !
meine BASE Freebsd 9.1 IPV6 geht in der Base 100%
Ich nutze IPv6 auf dem Host und in Jails (erstellt und administriert über ezjail).

Ohne jetzt Deine Konfiguration im Detail nachvollzogen zu haben, hier die beiden wesentlichen Unterschiede meines Setups:

1) Ich nutze kein geklontes Interface (lo1) sondern binde alle IPv6-Adressen an em0 und weise jedem Jail die von ihm benötigte IPv6 beim Start zu.

2) Ich benötige damit auch kein NAT für IPv6.

(IIRC, dann ist NAT und IPv6 nicht ohne Probleme möglich, zumindest als ich mich vor ein paar Jahren darum kümmerte. Aber man braucht es ja auch gar nicht, wir verfügen ja mit unseren /64 Netzen über IPv6-Addressen ohne Ende ;-) Aber vielleicht ist das heute kein Problem mehr, da müßten andere hier einspringen.)


Abschließend Deine Beispiele von Deinem Host aus einem meiner Jails:

Code:
MW-test|root> nc -6uvw 1 2001:4860:4860::8888 53
Connection to 2001:4860:4860::8888 53 port [udp/domain] succeeded!
MW-test|root> nc -6vw 1 2001:4860:4860::8888 53
Connection to 2001:4860:4860::8888 53 port [tcp/domain] succeeded!
Ansonsten: bei IPv6 keine "modulate state" bei pf und "pass out" einsetzen, aber das sehe ich bei Dir auch nicht. Darüber bin ich mal gestolpert.

AnimaTow
31.08.13, 13:25
Hallo ich versuche seit einiger zeit schon auf meinen Jails ipv6 zu nutzen,

nur leider scheine ich irgendwas nicht zu verstehen, vielleicht kann mir einer ja helfen !

meine BASE Freebsd 9.1 IPV6 geht in der Base 100%

hier mal meine Configs

RC.conf nur ipv6 einstellungen
Code:
ipv6_static_routes="ovhgw"
ipv6_route_ovhgw="2001:41D0:1:57ff:ff:ff:ff:ff -prefixlen 128 -interface em0"
ipv6_defaultrouter="2001:41D0:1:57ff:ff:ff:ff:ff"
ipv6_activate_all_interfaces="YES"
ipv6_gateway_enable="YES"

ifconfig_em0_ipv6="inet6 2001:41d0:1:5788::1 prefixlen 56"
ifconfig_em0_alias2="inet6 2001:41d0:1:5788::2 prefixlen 56"


cloned_interfaces="lo1"
ifconfig_lo1="inet 10.10.10.253 netmask 255.255.255.0"
ifconfig_lo1_ipv6="inet6 fec0:0:0:5::253 prefixlen 64"
ifconfig_lo1_alias0="inet 10.10.10.1 netmask 255.255.255.0"
ifconfig_lo1_alias1="inet6 fec0:0:0:5::1 prefixlen 64"


pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""


PF.CONF
Code:
ext_if = "{ em0 }"
int_if = "{ lo1 }"
loop_if = "{ lo0 }"
pptp_if = "{ lo2 }"

ext_ipv6 = "{ 2001:41d0:1:5788::1 }"
ext_ipv6_ns1 = "{ 2001:41d0:1:5788::2 }"
ext_ipv6_web1_master = "{ 2001:41d0:1:5788::20 }"

jail_web1_ipv4_lo0 = "{ 127.0.0.2 }"
jail_web1_ipv4_lo1 = "{ 10.10.10.1 }"
jail_web1_ipv6_lo1 = "{ fec0:0:0:5::1 }"

##########################
##### TABLES - A structure used to hold lists of IP addresses.
##########################
table  persist file "/etc/pf.block.ip.conf"
table  { 172.16.1.0/24 }
table  { 10.10.10.0/24 }

### Skip all PF processing on specified interface. This can be useful on loopback interfaces where filtering, normalization, queueing, etc, are not required.
set skip on $loop_if

# Macht Statistiken (pfctl -s info)
set loginterface em0

##########################
##### NORMALIZATION
##########################
scrub in all

##########################
##### TRANSLATION
##########################

### NAT IPv6
nat on $ext_if inet6 proto {tcp udp icmp6 gre} from $jail_web1_ipv6_lo1 to any -> $ext_ipv6_web1_master

##########################
##### RDR
##########################
### [HTTP] Outside to DMZ
rdr on $ext_if inet proto tcp from any to $ext_ip port 80 -> $jail_web1_ipv4_lo1
rdr on $ext_if inet6 proto tcp from any to $ext_ipv6_web1_osupcom port 80 -> $jail_web1_ipv6_lo1

# Generelle Block Regel
block on $ext_if
block return log on $ext_if
block in quick on $ext_if from  to any

##########################
##### PASS
##########################
### Loopback Device darf alles
pass quick on $loop_if

### Jail web1 ###
pass in quick on $ext_if inet proto tcp from any to $jail_web1_ipv4_lo1 port 80
pass in quick on $ext_if inet6 proto tcp from any to $jail_web1_ipv6_lo1 port 80


# OUT #
pass out quick on $ext_if inet proto tcp from any to any port ssh keep state queue ( ssh_out, ssh_ack_out )
pass out quick on $ext_if inet proto tcp all keep state queue ( std_out, ack_out )
pass out quick on $ext_if inet proto udp all keep state queue std_out

### IPv6 Out ###
pass out log on $ext_if inet6 proto {tcp, udp, icmp6, gre} all
pass in log on $ext_if inet6 proto {tcp, udp, icmp6, gre} all

### ICMP ###
pass in quick proto icmp6 all
#pass in quick proto icmp all

### PING ###
pass in on $ext_if inet proto icmp from $ping_outbound_ips to any icmp-type $icmp_types_in keep state
pass out on $ext_if inet proto icmp from $ping_outbound_ips to any icmp-type $icmp_types_out keep state
pass in on $ext_if inet6 proto icmp6 from $ping6_outbound_ips to any icmp6-type $icmp6_types_in keep state
pass out on $ext_if inet6 proto icmp6 from $ping6_outbound_ips to any icmp6-type $icmp6_types_out keep state
### TRACEROUTE ###
pass in on $ext_if inet proto udp from any to any port 33433 >< 33626 keep state
pass in on $ext_if inet6 proto udp from any to any port 33433 >< 33626 keep state

traceroute6 BASE
Code:
traceroute6 to ipv6.l.google.com (2a00:1450:400c:c00::93) from 2001:41d0:1:5788::1, 64 hops max, 12 byte packets
 1  rbx-1-6k.fr.eu  0.846 ms *  0.677 ms
 2  rbx-g2-a9.fr.eu  1.057 ms  0.994 ms  0.916 ms
 3  gsw-g1-a9.fr.eu  5.092 ms  5.535 ms
    gsw-g1-a9.fr.eu  4.789 ms
 4  * * *
 5  google.as15169.fr.eu  5.570 ms  4.758 ms  4.982 ms
 6  2001:4860::1:0:4a3a  4.989 ms
    2001:4860::1:0:9f2  5.556 ms
    2001:4860::1:0:4a3a  5.418 ms
 7  2001:4860::8:0:3df5  5.916 ms
    2001:4860::8:0:3df4  6.093 ms
    2001:4860::8:0:3df5  5.974 ms
 8  2001:4860::8:0:507b  10.714 ms  10.266 ms
    2001:4860::8:0:507c  10.323 ms
 9  2001:4860::2:0:87b  10.586 ms  10.630 ms
    2001:4860::2:0:87d  25.408 ms
traceroute6 JAIL WEB1
Code:
traceroute6 to ipv6.l.google.com (2a00:1450:4007:806::1014) from fec0:0:0:5::1, 64 hops max, 12 byte packets
 1  rbx-1-6k.fr.eu  1.562 ms  11.127 ms *
 2  rbx-g2-a9.fr.eu  2.627 ms  1.792 ms  2.253 ms
 3  gsw-g1-a9.fr.eu  7.324 ms
    gsw-g1-a9.fr.eu  4.704 ms  4.684 ms
 4  * * *
 5  google.as15169.fr.eu  5.937 ms  4.797 ms  5.035 ms
 6  2001:4860::1:0:9f2  7.764 ms  4.846 ms  5.124 ms
 7  2001:4860:0:1::39f  5.118 ms  5.002 ms  5.208 ms
 8  * * *
 9  * * *

PING6 JAIL WEB1
Code:
root@web1:/root # ping6 google.com
PING6(56=40+8+8 bytes) fec0:0:0:5::1 --> 2a00:1450:4007:806::1001
16 bytes from 2a00:1450:4007:806::1001, icmp_seq=0 hlim=57 time=4.769 ms
16 bytes from 2a00:1450:4007:806::1001, icmp_seq=1 hlim=57 time=4.775 ms
16 bytes from 2a00:1450:4007:806::1001, icmp_seq=2 hlim=57 time=4.827 ms

WGET TEST JAIL WEB1
Code:
root@web1:/root # wget ipv6.google.com
--2013-08-31 12:19:45--  http://ipv6.google.com/
Resolving ipv6.google.com (ipv6.google.com)... 2a00:1450:4007:806::1014
Connecting to ipv6.google.com (ipv6.google.com)|2a00:1450:4007:806::1014|:80...
BASE
Code:
root@master:/root # nc -6uvw 1 2001:4860:4860::8888 53
Connection to 2001:4860:4860::8888 53 port [udp/domain] succeeded!
root@master:/root # nc -6vw 1 2001:4860:4860::8888 53
Connection to 2001:4860:4860::8888 53 port [tcp/domain] succeeded!
JAIL WEB1
Code:
root@web1:/root # nc -6uvw 1 2001:41d0:a:ddee:1::1 53
Connection to 2001:41d0:a:ddee:1::1 53 port [udp/domain] succeeded!
root@web1:/root # nc -6vw 1 2001:41d0:a:ddee:1::1 53
nc: connect to 2001:41d0:a:ddee:1::1 port 53 (tcp) failed: Operation timed out
was mach ich nur Falsch, bin schon etwas am verzweifeln....