• ベストアンサー

pf+mpd環境における問題について

FreeBSD 5.3Rにてpf+mpdにてルータを構築しています。 しかし、システム起動時にpfが先に起動するため、 interface ng0 doesn't exist とエラーが出てしまい、pfが有効になりません。 そのため、毎回mpd起動後に # /etc/rc.d/pf reload としてpfを再読込みさせています。 どうすれば、pf+mpdでエラーを回避できるのでしょうか? よろしくお願いします。 なお、mpd.shはportsにてデフォルトでインストールされるスクリプトを用いています。 pf /etc/rc.d/pf mpd [/usr/ports/net/mpd/] /usr/local/etc/rc.d/mpd.sh /etc/pf.conf ext_if="ng0" (↑エラー箇所)

質問者が選んだベストアンサー

  • ベストアンサー
  • fkimura
  • ベストアンサー率29% (27/92)
回答No.1

私は最近試したことはないのですが、補足要求です。 --引用-- To use pf, please follow these steps: 1. Add kernel options into your kernel config file and recompile kernel: device bpf options PFIL_HOOKS options RANDOM_IP_ID 2. Please set the following variables in /etc/rc.conf according to your needs: pf_enable="Yes" pf_logd="Yes" pf_conf="%%PREFIX%%/etc/pf.conf" 3. Check %%PREFIX%%/etc/rc.d/pf.sh, it is the startup script for pf! --引用-- これはちゃんとされていると思って良いですか?

pirosuke88
質問者

補足

> fkimura さん いつもHPを参考にさせていただいています。 補足が遅くなり、すみません。 設定は、 /etc/rc.confに以下の項目を追加しています。 pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES" 1.についてですが、 5.3Rでは、必要なモジュールが自動でロードされるようなので、起動時にモジュールは追加していません。 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html 2.おそらく、上記の書き方で合っていると思います。 3.デフォルトで、/etc/rc.d/pfの起動スクリプトがあるので問題ないと思います。 色々調べたのですが解決方法が見つからず、 取りあえず、下記のスクリプトを実行してしのいでいます。 /usr/local/etc/rc.d/pf_reload.sh #!/bin/sh sleep 3 /etc/rc.d/pf reload

その他の回答 (1)

回答No.2

OpenBSD の pf のマニュアルを見ると、インターフェース名を () で括ることで、そのインターフェースが認識されたり、IP が変更された/割り当てられた時点でルールを認識するようになる、と読めるんですけどね。   Surrounding the interface name in parentheses   changes this behaviour. When the interface   name is surrounded by parentheses, the rule   is automatically updated whenever the   interface changes its address.   The ruleset does not need to be reloaded. 検証環境が無いので、嘘だったらごめんなさい。 p.s. FreeBSD 5.4R で使ってますが、synproxy state の動きがおかしかったりするので、OpenBSD じゃないとダメな話があるのかも...

参考URL:
http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&sektion=5&arch=&apropos=0&manpath=OpenBSD+3.4

関連するQ&A

  • ddclient :permission dinied

    Dyn.dnsをつかっています。 FreeBSD のサーバー機にddclient をインストールしました。設定をすませ、ddclient start とするとすぐにpermission dinied というエラーがでました。 インストール作業は cp ddclient /usr/sbin/. cp sample-etc/ddclient.conf /etc のあと ln で名前を ddclient.confに変え rmでもとのなまえを削除し、 confを編集し、 cp sample-etc_rc.d_init.d_ddclient /usr/local/etc/rc.d として ln とrmで名前をddlient.sh としました。 どこがおかしいのでしょうか?よろしくおねがいします。

  • OS停止・リブート時のrcスクリプト

    いつも参考にしています。 OS停止・リブート時のrcスクリプトについてご教示下さい。 あるアプリの実行シェルを/usr/local/aaaa/start.shに配置し、 /etc/rc3.d/と/etc/rc5.d/配下で下記コマンドを実施し、リンクを張りました。 ln -s /usr/local/aaaa/start.sh S80aaaa この設定でOS起動時にaaaaのアプリを起動する事は出来ました。 また、/etc/rc6.d/と/etc/rc0.d/配下で下記コマンドを実施したのですが、OS起動時に停止していないように見えます。 (/var/log/messagesを見ても停止する様子が確認できません。手動でシェルを実行した場合は/var/log/messagesにログが残ります) ln -s /usr/local/aaaa/stop.sh K10aaaa ここでのstart.sh/stop.shは単純にアプリの起動コマンド・停止コマンドを書いてあるだけのものです。 /etc/rc6.d/K10aaaaaを直接手動で実行すればアプリの停止は可能です。 同じように設定しているのになぜ停止のほうだけうまく動かないのかが分かりません。何かアドバイスがあればお願いします。

  • apacheでphp、exec、system関数でのsudo実行

    FreeBSD 7.0-STABLE でphpスクリプトを作っています。 apacheは2.0.63、phpはphp-4.4.9です。 apacheの設定 ユーザ、グループは、apache phpは safe_mode = offです。 sudoは apache ALL=(ALL) ALL と設定しています。 apacheを手動で起動 /usr/local/apache2/bin/apachectl start して、下記を実行すると <?PHP $cmd = "echo 'password' | sudo -S ls /root"; exec($cmd, $output); print_r($output); ?> 結果、 Array ( [0] => .cshrc [1] => .history [2] => .k5login [3] => .login [4] => .profile [5] => .ssh ) とうまく実行できるのですが apacheを自動起動した場合、 以下の方法をそれぞれ試しましたが # cp /usr/local/apache2/bin/apachectl /usr/local/etc/rc.d/apache.sh # chmod 0755 /usr/local/etc/rc.d/apache.sh より起動 /etc/rc.local # Start Apache /usr/local/apache2/bin/apachectl start より起動 crontab -e @reboot /usr/local/apache2/bin/apachectl start より起動 いずれも 結果は Array ( ) とうまくいきません。 どなたか原因のわかる方、教えていただけないでしょうか? 宜しくお願いいたします。

  • port からの install での error (FreeBSD)

    FreeBSD4.5でkinput2-cannaを入れようとして、 cd /usr/ports/japanese/kinput2-canna make とすると、 >> kinput2-v3.1-beta2.tar.gz doesn\'t seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.sra.co.jp/pub/x11/kinput2/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. >> Couldn\'t fetch it - please try to retrieve this >> port manually into /usr/ports/distfiles/ and try again. *** Error code 1 Stop in /usr/ports/japanese/kinput2-canna. *** Error code 1 (繰り返し) となります。 仕方なく、 http://www.jp.freebsd.org/QandA/HTML/443.html のA2を参考に、 ftp:ftp.freebsd.org/pub/FreeBSD/FreeBSD-stable/package/japanese/ja-kinput2-canna-3.1.b2.tgz を取ってきて、kinput2-v3.1-beta2.tar.gzと ファイル名を変更してみたのですが、 portからのinstallは無理でした。 (←これはまぁ無茶でしょうけど) 原因を私なりに考えてみたのですが、 Lan内にある別のWindowsから これらのFTPサイトにアクセスすると、 目的のファイルには到達できるのですが、 FreeBSD上のw3で これらのFTPサイトにアクセスしてみたところ、 上のディレクトリで、アクセスできないという メッセージがでます。 このことより、FreeBSDのftp loginの設定がおかしい のではないかと疑ってみたのですが、 具体的にどのようにすればいいかが分かたないため、 行き詰まってます。 これまで、terminal、window manger等 port から install した際には このようなerrorは出ませんでした。 相手先のFTPサーバーの問題かなとも思い、 時間を置いて再試行してみたのですが、 結果は同じです。 かなり初歩的なこととは思いますが、 アドバイスをお願いします。

  • portsの依存関係確認について

    FreeBSD 6.2R を利用しており、過去に cvsup にて ports を最新化した事があります。 ports 導入に際し依存関係を確認しようと下記コマンドを実行しました。 ------------------------------------------------------ # cd /usr/ports/x11/xorg # make pretty-print-run-depends-list This port requires package(s) "" to run. # make pretty-print-build-depends-list # ------------------------------------------------------ xorg は依存関係あるはずなのですが... 試しに下記のコマンドを打つと下記のような結果となります。 ------------------------------------------------------ # make run-depends-list /usr/ports/graphics/dri /usr/ports/x11-drivers/xorg-drivers /usr/ports/x11-fonts/xorg-fonts /usr/ports/x11-servers/xorg-server /usr/ports/x11-themes/xcursor-themes /usr/ports/x11/xbitmaps /usr/ports/x11/xorg-apps /usr/ports/x11/xorg-docs /usr/ports/x11/xorg-libraries # ------------------------------------------------------ INDEX ファイルの問題かと思い portsnap で最新化しました。 ------------------------------------------------------ # portsnap fetch # portsnap extract # portsnap update ------------------------------------------------------ 再度、pretty-print-run-depends-list を行うも変化なしです。 /usr/ports で make index や、portupgrade を入れて、 portsdb -Uu を行うもエラーがでてしまいます。 ------------------------------------------------------ # cd /usr/ports # make index Generating INDEX-6 - please wait..Unknown modifier 'u' Unknown modifier 'u' Unknown modifier 'u' Unknown modifier 'u' Unknown modifier 'u' Syntax error: "||" unexpected ===> arabic/ae_fonts_mono failed *** Error code 1 Unknown modifier 'u' Unknown modifier 'u' Unknown modifier 'u' Unknown modifier 'u' Unknown modifier 'u' Syntax error: Unterminated quoted string ===> accessibility/accerciser failed *** Error code 1 2 errors ******************************************************************** Before reporting this error, verify that you are running a supported version of FreeBSD (see http://www.FreeBSD.org/ports/) and that you have a complete and up-to-date ports collection. (INDEX builds are not supported with partial or out-of-date ports collections -- in particular, if you are using cvsup, you must cvsup the "ports-all" collection, and have no "refuse" files.) If that is the case, then report the failure to ports@FreeBSD.org together with relevant details of your ports configuration (including FreeBSD version, your architecture, your environment, and your /etc/make.conf settings, especially compiler flags and WITH/WITHOUT settings). Note: the latest pre-generated version of INDEX may be fetched automatically with "make fetchindex". ******************************************************************** *** Error code 1 Stop in /usr/ports. *** Error code 1 Stop in /usr/ports. ------------------------------------------------------ 誰か解決策を教えて頂けませんでしょうか。 宜しくお願い致します。

  • FreeBSD における、アプリの起動スクリプトと登録の方法

    いま独自のサーバ用アプリを作っています。それを、FreeBSD起動時に自動的に立ち上がるようにしたいのですが、方法が分かりません。教えていただける方、あるいは、参考URLをご存知の方お教えください。 たとえば、linuxでしたら、 /etc/init.d/hogehoge start とすると、hogehogeアプリを起動し、 /etc/init.d/hogehoge stop とすると、hogehogeアプリを停止するようなスクリプトを書きます。hogehoge中身は、たとえば、以下のような感じですかね。 ----------------------------------------------------- #! /bin/sh # # chkconfig: 2345 85 15 # description: hoge hoge ... . /etc/rc.d/init.d/functions cd /usr/local/xl-gbs PATH=$PATH:/usr/local/xl-gbs/xlscript/bin export PATH start() { xl gbserver.xl / start echo } stop() { xl gbserver.xl / stop echo } restart() { stop start } case "$1" in start) start ;; stop) stop exit 1 ;; restart) restart ;; *) ;; esac exit 0 ----------------------------------------------------- その上で、 % chmod 0755 /etc/init.d/hogehoge % chkconfig --add /etc/init.d/hogehoge という風に登録します。 まあ、この操作に対応するFreeBSDの操作を教えていただければありがたい。

  • rcスクリプトの作成について

    デーモンとして /home1/bea81/weblogic81/server/bin/startNodeManager.sh のファイルをOS起動時にサービスとして起動させたいと思っています。 そこでまず /etc/init.d/nodemanager として以下のスクリプトファイルを作成し、 実行権限を与えました。 確認として以下を実行しましたが、、 # nodemanager start nodemanager: not found # # echo $PATH /usr/sbin:/usr/bin # # /etc/init.d/nodemanager /etc/init.d/nodemanager: not found # と絶対パスで記述してもNotFoundとなってしました。 何が原因なんでしょうか? また現状/etc/init.d/にパスが通っていない状況なんですが、OS起動時に既に パスを通っている状態にするにはどのようにしたら良いのでしょうか? また/usr/bin/などは既にパスが通っている状況なんですが、このようなファイルを /usr/bin/などの中に入れてしまうという事でも問題ないのでしょうか? ------------------------------------------------------------------------ /etc/init.d/nodemanager ------------------------------------------------------------------------ #!/bin/sh # # /etc/init.d/nodemanager.sh # case "$1" in start) if [ -f /home1/bea81/weblogic81/server/bin/startNodeManager.sh ] ; then /bin/su - weblogic -c 'cd /home1/bea81/weblogic81/server/bin;./startNodeManager.sh &' fi ;; *) echo "Usage: /etc/rc2.d/S99nodemanager{ start | stop }" exit 1 ;; esac exit 0 ------------------------------------------------------------------------ 宜しくお願い致します。

  • tomcatのリスタートについて

    tomcatのリスタートをしたいんですが 下記の2種類の方法ではだめでした。 別の方法、または再起動の方法を調べる方法を教えてください。よろしくお願い致します。 ===================================== 1:Tomcatを始動させるには /Tomcatまでのパス/bin/startup.sh を実行します。   Tomcatを停止させるには /Tomcatまでのパス/bin/shutdown.sh を実行しま   す 2:起動----/etc/rc.d/init.d/tomcat start   停止----/etc/rc.d/init.d/tomcat stop   再起動--/etc/rc.d/init.d/tomcat restart

  • tomcat自動起動がうまくいかない。

    FC3でApache2+tomcat4+mod_jk2で環境を構築しています。 Apache単体、tomcat単体、連繋とも全てうまくいきtomcatの自動起動設定を/etc/rc.d/init.d/tomcat というファイルで作製し、起動テストをおこなったのですが、実行時にエラーがでます。 作製したファイルの内容は以下のとおりです。 ここから #!/bin/sh # # Startup script for the tomcat # # chkconfig: 345 80 15 # description: Tomcat is a Servlet+JSP Engine. # Source function library. . /etc/rc.d/init.d/functions case "$1" in 'start') if [ -f /usr/local/tomcat/bin/startup.sh ]; then echo "Starting the tomcat service " su - nobody -c "export JAVA_HOME=/usr/java/j2sdk1.4.2_07;\export TOMCAT_HOME=/usr/local/tomcat;/usr/local/tomcat/bin/startup.sh" fi ;; 'stop') echo "Stopping the tomcat service." su - nobody -c "export JAVA_HOME=/usr/java/j2sdk1.4.2_07;\export TOMCAT_HOME=/usr/local/tomcat;/usr/local/tomcat/bin/shutdown.sh" ;; 'restart') $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac exit 0 ここまで rootでの/usr/local/tomcat/bin/startup.shを利用した起動は問題無く起動します。 JAVA_HOMEとCATALINA_HOMEは設定済みです。 どこが問題でしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • PHPで、Fatal error: Call to undefined

    PHPで、Fatal error: Call to undefined function mysql_connect()のエラーが出ます。 サーバは、FreeBSD /usr/ports/lang/php5-extensions にて、make install clean /usr/local/etc/php.ini にて、extension=php_mysql.dll のコメントをはずす apache再起動 を行いましたが改善されません。 php.infoを見ると、 extension_dir /usr/local/lib/php/20060613 となっているのですが、ここのディレクトリには、php_mysql.dllがありません… find / -name php_mysql.dll をしてみましたが、見つけることができませんでした。。 なので、php5-extensionsのインストールに失敗しているのかもしれませんが、再度posrからインストールしようとすると、 ===> Checking if textproc/php5-ctype already installed mkdir: /usr/local/etc/php: File exists *** Error code 1 Stop in /usr/ports/textproc/php5-ctype. *** Error code 1 Stop in /usr/ports/lang/php5-extensions. *** Error code 1 Stop in /usr/ports/lang/php5-extensions. となり、インストールできません。 色々調べてはいるのですが、解決できないので、教えてください! よろしくお願いします。