[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Elsterformular und Linux-Router



Werner Opriel wrote:

> Ich versuche die Elsterdatenuebertragung ebenfalls ueber Linux Router aus
> einem internen Netz herzustellen. Das LAN ist dabei durch eine DMZ vom
> Internet getrennt. Der DMZ-Proxy ist aus den oben beschriebenen Gruenden
> hier nicht im Spiel, die Elster Server werden also direkt angesprochen.
> Hinweis:
> Seit kurzer Zeit gibt es einen HTTP_Tunnel (benoetigt Java Webstart)
> unter: https://www.elster.de/elfo_tunnel.php?tunnelversion=1.0.0
> mit dem angeblich auch Squid funktionieren soll.
> 
> Folgende Regeln sollen den direkten Kontakt eines Client aus dem internen
> Netz zu einem der Elsterserver ermoeglichen:
> 
> # Router LAN --> DMZ
> # -------------------------------------------------------
> 
> ELSTER_PORT=8000
> ELSTER_SERV="62.157.211.58 62.157.211.59 62.157.211.60 \
>             193.109.238.26 193.109.238.27 213.182.157.66"
> 
> # Anfragen an externe Elster Server und Elster-Port  gewaehren
> for EP in $ELSTER_SERV
> do
>  $IPTABLES -A FORWARD -p TCP --sport $UNPRIVPORTS -d $EP \
>  --dport $ELSTER_PORT -m state --state NEW,ESTABLISHED,RELATED \
>  -o $DMZ_IF -i $LAN_IF -j ACCEPT
> done
> 
> # eingehende Pakete von Elster Servern zu bestehenden Verbindungen
> # zulassen (Rueckkanal)
> for EP in $ELSTER_SERV
> do
>  $IPTABLES -A FORWARD -i $DMZ_IF -o $LAN_IF -s $EP \
>  -m state --state ESTABLISHED,RELATED -j ACCEPT
> done
> 
> # Router DMZ --> Internet
> # -------------------------------------------------------
> 
> # die Elsterformular-Upload-Server und der zugehoerige Port
> ELSTER_SERVER=(62.157.211.58 \
>         62.157.211.59 \
>         62.157.211.60 \
>          193.109.238.26 \
>   193.109.238.27 \
>   213.182.157.66)
> ELSTER_PORT=8000
> 
> # Source  NAT  -- (SNAT/Masquerading)
> $IPTABLES -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
> 
> # Enable IP Forwarding
> echo 1 > /proc/sys/net/ipv4/ip_forward
> 
> # Anfragen (TCP) mit Zielport 8000
> # fuer den Zugriff auf die Elsterserver zulassen
> 
> for ES in ${ELSTER_SERVER[*]}
> do
>  $IPTABLES -A FORWARD -p TCP --sport $UNPRIVPORTS \
>  --dport $ELSTER_PORT -o $EXT_IF -i $DMZ_IF -d $ES \
>  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
> done
> 
> # Antworten (Rueckkanal) von Elster Servern explizit zulassen
> 
> for ES in ${ELSTER_SERVER[*]}
> do
> $IPTABLES -A FORWARD -i $EXT_IF -o $DMZ_IF -s $ES \
>  -m state --state ESTABLISHED,RELATED -j ACCEPT
> done
>
#---------------------------------------------------------------------------------
> 
> Die Verbindung kommt auch zustande, bricht allerdings nach kurzer Zeit mit
> einem Timeout ab.. Ein tcpdump zeigt folgendes:
> .......
>   4.828341 192.168.10.1 -> 193.109.238.27 TCP 1057 > 8000 [PSH, ACK]
> Seq=8302 Ack=2855 Win=7667 Len=271
>   4.886292 193.109.238.27 -> 192.168.10.1 TCP 8000 > 1057 [ACK] Seq=2855
> Ack=3265 Win=13050 Len=0
>   4.887251 192.168.10.1 -> 193.109.238.27 TCP 1057 > 8000 [PSH, ACK]
> Seq=8573 Ack=2855 Win=7667 Len=596
>   4.892174 193.109.238.27 -> 192.168.10.1 TCP [TCP Dup ACK 37#1] 8000 >
>   1057
> [ACK] Seq=2855 Ack=3265 Win=13050 Len=0
>   4.892614 193.109.238.27 -> 192.168.10.1 TCP [TCP Dup ACK 37#2] 8000 >
>   1057
> [ACK] Seq=2855 Ack=3265 Win=13050 Len=0
>   4.893559 192.168.10.1 -> 193.109.238.27 TCP [TCP Retransmission] 1057 >
> 8000 [PSH, ACK] Seq=3265 Ack=2855 Win=7667 Len=610
>   4.952832 193.109.238.27 -> 192.168.10.1 TCP [TCP Dup ACK 37#3] 8000 >
>   1057
> [ACK] Seq=2855 Ack=3265 Win=13050 Len=0
>   4.966322 193.109.238.27 -> 192.168.10.1 TCP 8000 > 1057 [ACK] Seq=2855
> Ack=3875 Win=14790 Len=0
>   5.773056 192.168.10.1 -> 193.109.238.27 TCP [TCP Retransmission] 1057 >
> 8000 [PSH, ACK] Seq=3875 Ack=2855 Win=7667 Len=1460
>   7.578914 192.168.10.1 -> 193.109.238.27 TCP [TCP Retransmission] 1057 >
> 8000 [PSH, ACK] Seq=3875 Ack=2855 Win=7667 Len=1460
>  11.190700 192.168.10.1 -> 193.109.238.27 TCP [TCP Retransmission] 1057 >
> 8000 [PSH, ACK] Seq=3875 Ack=2855 Win=7667 Len=1460
>  18.414291 192.168.10.1 -> 193.109.238.27 TCP [TCP Retransmission] 1057 >
> 8000 [PSH, ACK] Seq=3875 Ack=2855 Win=7667 Len=1460
>  32.861325 192.168.10.1 -> 193.109.238.27 TCP [TCP Retransmission] 1057 >
> 8000 [PSH, ACK] Seq=3875 Ack=2855 Win=7667 Len=1460
> 
> Irgendeine Idee wo es hier zwickt?
> 
Problem geloest !
Ich hatte ein "Path MTU Discovery" Problem.
Die dargestellten Regeln sind soweit ok. Wie man sehen kann wird die
Verbindung zwar aufgebaut und erste Datenpakete getauscht, aber
ab einem best. Punkt bricht die Verbindung ab.
Hier fuehrte eine zu  "strenge" ICMP Regel (nicht abgebildet) dazu, das die
Kommunikation ueber Paketgroesse bzw. "fragmentation-needed" nicht zustande
kam. :-(
Die Folge war ein Timeout auf der Clientseite.



Reply to: