Ab.の日記: IP Messenger に FreeBSD NAT で引きこもる
日記 by
Ab.
社内LAN側が 192.168.0.0/16、自分用引きこもりLANが 172.16.0.0/24、router は FreeBSD 5.4 で 192.168.0.253, 172.16.0.254。root を持ってます。
引きこもり LAN 内の IPMessenger の broadcast addr を 172.16.0.254 に設定しておきます。引きこもり LAN 内には自分のマシンしかありません。
*まず、 router で動かす daemon? script がコレ。
use strict;
use FileHandle;
use IO::Socket::INET;
use Encode;
STDOUT->autoflush(1);
STDERR->autoflush(1);
print "ipmsg relayer.pl started.\n";
my $sock_broadcast = IO::Socket::INET->new(PeerPort => 2425,
PeerAddr => '192.168.255.255',
Proto => 'udp',
LocalAddr => '192.168.0.253',
LocalPort => 2425,
Broadcast => 1,
)
or die "Can't bind : $@\n";
my $sock_listen = IO::Socket::INET->new(Proto => 'udp',
LocalAddr => '172.16.0.254',
LocalPort => 2425,
)
or die "Can't listen : $@\n";
my $cnt = 0;
while (1) {
my $buf;
$sock_listen->recv($buf, 64*1024);
$cnt ++;
print $sock_broadcast $buf;
$buf =~ s/\000/_0_/g;
Encode::from_to($buf, "shift_jis", "euc-jp");
print "$buf\n";
}
* あとは、pf で引きこもりLANから社内LANに飛んでゆく 2425/udp へのパケットを nat します。このとき static-port って書いてやって、src port を 2425 のままにしておいてやります。
* 最後に、pf で 192.168.0.253 2425/udp を IP Messenger を動かしてるマシンに rdr してやれば出来上がり。
pf に 192.168.255.255 や 255.255.255.255 を rdr するルールも書いたけど、どうやらリダイレクトしてくれないようなので、自分で「更新」ボタンをたたかないとメンバー表は更新されません。
引きこもり LAN 内の IPMessenger の broadcast addr を 172.16.0.254 に設定しておきます。引きこもり LAN 内には自分のマシンしかありません。
*まず、 router で動かす daemon? script がコレ。
use strict;
use FileHandle;
use IO::Socket::INET;
use Encode;
STDOUT->autoflush(1);
STDERR->autoflush(1);
print "ipmsg relayer.pl started.\n";
my $sock_broadcast = IO::Socket::INET->new(PeerPort => 2425,
PeerAddr => '192.168.255.255',
Proto => 'udp',
LocalAddr => '192.168.0.253',
LocalPort => 2425,
Broadcast => 1,
)
or die "Can't bind : $@\n";
my $sock_listen = IO::Socket::INET->new(Proto => 'udp',
LocalAddr => '172.16.0.254',
LocalPort => 2425,
)
or die "Can't listen : $@\n";
my $cnt = 0;
while (1) {
my $buf;
$sock_listen->recv($buf, 64*1024);
$cnt ++;
print $sock_broadcast $buf;
$buf =~ s/\000/_0_/g;
Encode::from_to($buf, "shift_jis", "euc-jp");
print "$buf\n";
}
* あとは、pf で引きこもりLANから社内LANに飛んでゆく 2425/udp へのパケットを nat します。このとき static-port って書いてやって、src port を 2425 のままにしておいてやります。
* 最後に、pf で 192.168.0.253 2425/udp を IP Messenger を動かしてるマシンに rdr してやれば出来上がり。
pf に 192.168.255.255 や 255.255.255.255 を rdr するルールも書いたけど、どうやらリダイレクトしてくれないようなので、自分で「更新」ボタンをたたかないとメンバー表は更新されません。
IP Messenger に FreeBSD NAT で引きこもる More ログイン