From owner-FreeBSD-users-jp@jp.FreeBSD.org Fri Mar  7 01:08:02 2003
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id h26G82K07684;
	Fri, 7 Mar 2003 01:08:02 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from ns.s-lines.net (ns.s-lines.net [2001:218:49a:8a00::1])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet6 id h26G81707679
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Fri, 7 Mar 2003 01:08:02 +0900 (JST)
	(envelope-from tatsuya@ps.sakura.ne.jp)
Received: from localhost (localhost [127.0.0.1])
	by ns.s-lines.net (Postfix) with ESMTP id 883A61B6BE
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Fri,  7 Mar 2003 01:07:58 +0900 (JST)
Received: from [192.168.10.11] (tower1.s-lines.net [192.168.10.11])
	by ns.s-lines.net (Postfix) with ESMTP id 1B5041B614
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Fri,  7 Mar 2003 01:07:54 +0900 (JST)
From: TATSUYA <tatsuya@ps.sakura.ne.jp>
To: FreeBSD-users-jp@jp.FreeBSD.org
Organization: S-Lines.net
Message-Id: <20030307005904.4ED5.TATSUYA@ps.sakura.ne.jp>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
X-Mailer: Becky! ver. 2.05.10
X-Virus-Scanned: by AMaViS perl-11
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Fri, 07 Mar 2003 01:07:57 +0900
X-Sequence: FreeBSD-users-jp 73673
Subject: [FreeBSD-users-jp 73673] UPnP Gateway on FreeBSD
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: tatsuya@ps.sakura.ne.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+030304

$B$3$s$P$s$O!#(BS-Lines.net$B$N(BTATSUYA$B$G$9!#(B

$B@hF|!"(BUPnP$B$K4X$7$FD4$Y$F$k$H$-$K0J2<$N=q$-9~$_$r8+$D$1$^$7$F!"(BFreeBSD$B$G$b(B
UPnP$B$N%2!<%H%&%'%$$r:n@.$9$k$3$H$,$G$-$k$3$H$,$o$+$j$^$7$?!#(B

$B$7$+$7!"$I$&$$$&$o$1$+$&$^$/$$$-$^$;$s!#(B
$B<+J,$J$j$K%=!<%9$r8+$?$j$7$FD4$Y$F$_$?$N$G$9$,2r7h$7$J$$$N$G!"$b$7$h$m$7$1$l$P(B
$B$*NO$rB_$7$F$$$?$@$-$?$$$H;W$$$^$7$F%a!<%k$r$5$;$F$$$?$@$-$^$7$?!#(B
 --> http://www.wildlab.com/bbs/wforum.cgi?no=2109&reno=no&oya=2109&mode=msg_view

$B$J$*!"EvJ}%U%l%C%D!&(BADSL$B$rMxMQ$7(B ng0 $B$,308~$1$N%$%s%?!<%U%'%$%9!"(B fxp0 $B$,(B
$BFb8~$1$N%$%s%?!<%U%'%$%9$G$9!#$^$?!"(Bipfw+natd$B$rMxMQ$7(BLAN$B$+$i(BWAN$B$K=P$F$$$k>uBV$G$9!#(B

$B$^$:!"(BPorts$B$+$i(B upnp 1.0.4 $B$rF~$l!"F1MM$K(B linuxigd 0.92 $B$bF~$l$^$7$?!#(B

$B$=$N$"$H$K!"(BUPnP$B$O%^%k%A%-%c%9%H$G;H$o$l$k(BIP$B%"%I%l%9$rMxMQ$9$k$H$$$&$3$H$G!"(B
  # route add 239.0.0.0/255.0.0.0 -interface fxp0
$B$r<B9T$7(B
  # netstat -rn -f inet
$B$G!"(B
  239.0.0/31         link#2             UCS         0        0   fxp0
$B$H$$$&$h$&$K%k!<%F%#%s%0$,EPO?$5$l$?$3$H$r3NG'$7$?$N$A$K(B
  # /usr/local/bin/upnpd ng0 fxp0
$B$H$7!"(BUPnPd$B$rN)$A>e$2!"(BWindowsXP$B$N(BWindows Messanger$B$r;H$$!"2;@<(BCHAT$B$r$7$h$&$H$7$^$7$?$,!"(B
$B!V(B***$B$N%3%s%T%e!<%?$H@\B3Cf(B...$B!W(B
$B$H$$$&$H$3$m$G=*$o$C$F$7$^$$!"2;@<(BCHAT$B$O$G$-$^$;$s$G$7$?!#(B

$B860x$rD4$Y$h$&$H(Blinuxigd$B$N%=!<%9$rD/$a$F$$$k$H(B pmlist.cpp $B$H$$$&%=!<%9$K$*$$$F(B
ipnat$B$,;H$o$l$F$$$^$7$?!#EvJ}$N4D6-$G$O(B ipfw $B$rMxMQ$7$F$$$k$?$a$3$3$GLdBj$K(B
$B$J$C$F$$$k$H$O;W$&$N$G$9$,!"(Bipnat$B$r;H$C$?$3$H$,$J$$$?$a$I$N$h$&$J%k!<%k$rDj5A(B
$B$7$F$$$k$N$+$5$C$Q$j$G!&!&(B

$B3:EvItJ,$O(B2$B2U=j$"$j!"(B1$B2U=j$O0J2<$N(B PortMapList::addPortForward $B$H$$$&ItJ,$G(B
---
int PortMapList::addPortForward(char *Proto, char *ExtIP, int ExtPort,
	char *IntIP,int IntPort, int Enabled, char *Desc)
{
	char command[255];

	FILE *ipnat = popen("/sbin/ipnat -f -", "w");
	if (ipnat == NULL)
		return 0;
	sprintf(command, "rdr %s %s/32 port %d -> %s port %d %s",
		ExtIf, ExtIP, ExtPort, IntIP, IntPort, Proto);
	fprintf(ipnat, command);
	pclose(ipnat);

	return (1);
}
---
$B$H$$$&%=!<%9$J$N$G$9$,!"8+$?46$8(B ipfw $B$N(B fwd $B$HF1$8;v$r$7$F$$$k$H$$$&$3$H$^$G$O(B
$B$I$&$K$+$o$C$?$?$a!"6/0z$K(B
---
int PortMapList::addPortForward(char *Proto, char *ExtIP, int ExtPort,
	char *IntIP,int IntPort, int Enabled, char *Desc)
{
	char command[255];

	sprintf(command, "/sbin/ipfw add 500 fwd %s %s from %s %d to %s %d", IntIP, Proto, ExtIP, ExtPort, IntIP , IntPort);
	system(command);
	return (1);
}
---
$B$H$$$&(B ipfw $B$N%k!<%k$rDI2C$7$F$_$^$7$?!#(B

$B$,!"$d$O$j:,K\E*$K0c$&$h$&$G!"(BUPnP$B$rMxMQ$9$k$3$H$O$G$-$^$;$s$G$7$?!#!#(B
($BEv=i$N>u67$HF1$8>u67$K$J$k!#(Bipfw$B$G0lIt%Q%1%C%H$,$O$8$+$l$F$$$k$h$&$@$C$?$N$G!"8DJL$K(B
$B%Q%1%C%H$rDL$9$h$&$K$7$F$b>u67$O$+$o$i$:!#(B)

$B$J$*!"$b$&0l2U=j(B ipnat $B$,;H$o$l$F$$$k$N$O>e$N4X?t$GEPO?$5$l$?%k!<%k$r>C$9$?$a$N$b$N$G$7$?$N$G!"(B
$BC1=c$K(B
---
	sprintf(command,"/sbin/ipfw del 500");
	system(command);
---
$B$H$$$&Iw$KCV$-49$($r$7$F!"%3%s%Q%$%k$r$7$^$7$?!#(B

$B$^$:$O(B ipnat $B$NItJ,$r(B ipfw $B$K=q$-D>$9I,MW$,$"$k$H;W$&$N$G$9$,6qBNE*$K(B
$B$I$N$h$&$K=q$-D>$;$P$$$$$N$G$7$g$&$+!)$^$?EvJ}(BC$B8@8l$b3X9;$N<B=,$G;H$&(B
$BDxEY$G$"$^$jM}2r$G$-$F$$$J$$$?$a4V0c$C$?2U=j$,$"$k$+$b$7$l$^$;$s!&!&!&(B

$B$*NO$rB_$7$F$$$?$@$1$^$7$?$i9,$$$G$9!#(B
$B$h$m$7$/$*4j$$$7$^$9!#(B

---
 TATSUYA   E-Mail : tatsuya@ps.sakura.ne.jp
           W e b  : http://TATSUYA.info/
 Flet's ADSL + FreeBSD HomeServer -> http://www.S-Lines.net/



