Linux | Top

FLET'S ADSL & Linux で PPPoE

注意: フレッツADSLのサービスが始まった頃に書いたページなので、所により内容が古いです。

FLET'S ADSL の契約


ADSLモデムの物理的接続


PPPoE 接続


フィルタリング


静的NAT

IRC の dcc とか、ネットゲームとか、そういう時に必要になるのが「静的NAT」です。
  1. PREROUTING ルールで、特定のポート番号で接続してきたパケットの宛先の IPアドレスを、 IRC とかネットゲームとかしている LAN 上のマシンのものに変換します。
  2. そのパケットを FORWARD ルールで通過させます。

iptables 設定例

iptables.pppoe
[追記 2005/02/04] このスクリプトは、再実行してフィルタリングルールを更新する際に 古いルールを削除する方法が乱暴なので、 既存の通信が中断されることがあります。 「Linuxでマルチホーム」のページで よりよいスクリプトを公開していますので、そちらをご利用ください。

外からのアクセスに対しては:

内からのアクセスに対しては: [2001/12/28 追加] PlayOnline (FF XI) への対応

基本的には内(PS2)→外(PlayOnline)への通信なので、ただの NAT だけで問題ないようですが、iptables のログを見てると稀に外→中への通信が発生して(当然 reject され)るので、以下のルールを追加してみました。 PS2_IPADDR の部分(4ヶ所)を PS2 に割り振られた IPアドレスに書き換えてください。

iptables -t nat -A PREROUTING -i ppp0 -p tcp --source 61.195.48.0/21 --source-port 51240 -j DNAT --to-destination PS2_IPADDR
iptables -A FORWARD -p tcp --source 61.195.48.0/21 --destination PS2_IPADDR --source-port 51240 -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --source 61.195.48.0/21 --source-port 54000 -j DNAT --to-destination PS2_IPADDR
iptables -A FORWARD -p tcp --source 61.195.48.0/21 --destination PS2_IPADDR --source-port 54000 -j ACCEPT

ログ整形スクリプト

iptables の LOG ルールで syslog に出力したログを整形します。 上記の iptables.pppoe の例のように「--log-prefix 'iptables: '」と設定して syslog に「kernel: iptables:」という文字列が記録されている行を対象にします。
iptables-log.pl
標準入力からログファイルを読み込み、整形して標準出力に出力します。 perl script です。
iptables-log.cgi
iptables-log.pl にログを食わせるための sh script です。
出力例:
Apr 15 00:30:16 UDP  AAA.aaa.ad.jp(xxx.xxx.xxx.xxx):137 > 203.141.129.23:137
Apr 15 00:30:45 TCP  (yyy.yyy.yyy.yyy):4261 > 203.141.129.23:111
Apr 15 04:05:42 ICMP BBB.bbb.org(zzz.zzz.zzz.zzz):8 > 203.141.129.23
順にこう並んでます。 ホスト名は始点IPアドレスから索けたら出力されます。 ホスト名の情報はキャッシュに溜めるので、 一度索けなかった IPアドレスについては次からは索きにいきません。