동적 IP번호: 첫 번째 패키지가 없어 졌습니다.

고객지원 지식기반 (dynippatch)
적용 범위

Kernel: 버전 이래로 2.0.30

Symptom

온더맨드로 동작하는 동적 IPs 다이얼을 가지고 있는 syncPPP가 있습니다. 하지만, 첫 번 째 IP 패키지가 없어졌습니다.

예들 들어, 웹페이지를 선택하면 연결은 되지만 새로고침(Reload)를 한 다음에야 사이트를 볼 수 있습니다.

Cause:

넷인터페이스가 특정 IP를 사용하도록 설정되어 있기 때문입니다. 첫 번째 패키지가 첫 번 째 주소로 보내진 다음에 연결이 되자마자 새로운 IP가 지정되게 될 것입니다. 그래서 첫 번째 패키지가 전송되었지만 리턴 주소가 이제 다른 것으로 바뀌었기 때문에 응답을 받지 못하게 됩니다. 또는, 응답이 다른 주소로 보내지게 됩니다.

Solution:

해결 방법은 아주 쉽습니다. 새로운 IP가 알려지기 전까지 첫 번째 패키지를 유지시키는 것 입니다.

  1. 커넬 버전 2.0.31 이상에서는 이에 대한 해결책이 들어 있습니다.(정확히 말하면 pre-patch-2.0.31-5입니다.)
  2. 수세 버전 커넬 2.0.30(패킷 lx-suse)에도 이 패치는 이미 포함되어 있습니다.

이것이 제대로 동작하려면 커넬에 파라미터를 패스시켜 주어야 합니다.

그리고 이것은 4l 서브시스템이 시작되기 전에 해 주어야 합니다. 또 이것은 /sbin/init.d/boot.local에서 하는 것을 권장합니다.

만약 이것이 성공하면 /var/log/messages(echo 2 사용)에 다음과 같은 것이 나타나야 합니 다.

[..]
Sep 30 10:36:04 wilma ipppd[729]: local  IP address 10.10.129.228
Sep 30 10:36:04 wilma ipppd[729]: remote IP address 192.44.86.9
Sep 30 10:36:08 wilma kernel: ip_fw_masquerade(): change maddr from 192.168.42.1
 to 10.10.129.228
Hint: 연결이 마스커레이드 어드레스로부터 설립되었다면 커넬 버전 2.0.32까지에서만 동작 합니다. 이것을 리눅스 시스템 자체에서 한다면 동작하지 않습니다.

이 문제는 Erik Correy씨가 만든 다음 패치로 해결될 수 있습니다.

--- linux/net/ipv4/tcp_output.c Thu Oct 16 15:38:49 1997
+++ linux-2.0.31pre9-ec/net/ipv4/tcp_output.c   Thu Oct 16 15:03:36 1997
@@ -578,7 +560,7 @@
                                }
                        }
                        skb->raddr=rt->rt_gateway;
-                       if (skb->dev !=dev && sk->state == TCP_SYN_SENT && sysctl_ip_dynaddr)
+                       if ((skb->dev !=dev || skb->dev->pa_addr != skb->ip_hdr->saddr) && sk->state == TCP_SYN_SENT && sysctl_ip_dynaddr)
                                 ip_rewrite_addrs(sk, skb, dev);
                        skb->dev=dev;
                        skb->arp=1;
Christian Meyer(smart#on-line.de)씨께도 감사드립니다.
관련 내용:
o 동적 IP 주소: 라우트 설정하기

키워드: ISDN, SYNCPPP, IPPPD, DIAL ON DEMAND, DYNAMISCHE IP-NUMMERN, PAKET GEHT VERLOREN

카테고리:

피드백: Send Mail to kfr@suse.de (Please give the following subject: SDB-dynippatch)
SDB-dynippatch, Copyright SuSE Linux AG, Nrnberg, Germany - 버전: 20. Feb 2001
SuSE Linux AG - 최근에 만들어진 : 20. Feb 2001 에 의해 kfr (sdb_gen 1.40.0)