![]() |
LINUX |
iptablesのインストール 4 Xen
・xenのファイアウォール (iptables) の設定をします
・iptables-1.4.12.1をソースからインストールし、設定します
・xend,xendomainsの起動の前に設定します
・ドメイン0の設定です
・make はメンテナンスマシンで行っています
・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します
・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます
関連サイト| :iptables-1.4.12.1.tar.bz2 | (http://www.netfilter.org/) |
参照ファイル
インストール環境| :OS | CentOS 5.6 |
| :kernel | linux-2.6.18.8-xen |
| :selinux | disabled |
| :インストール先 | |
| :作業 | /usr/src |
| :言語 | LANG=en_US.UTF-8 |
| :ユーザー | rootで実行 |
・メンテナンスの場合は一般ユーザから行います
iptables-1.4.12.1
旧iptablesの削除・自動起動スクリプトも削除されます
・必要なので、名前を変えて保存します
# cd /etc/init.d
[root@earth:/etc/init.d]
# cp iptables iptables-ORG && chmod 644 iptables-ORG
# cp ip6tables ip6tables-ORG && chmod 644 ip6tables-ORG
# rpm -e iptables iptables-ipv6
iptablesのインストール# cd /usr/src [root@earth:/usr/src] # tar jxvf iptables-1.4.12.1.tar.bz2 # chown -R root:root iptables-1.4.12.1 # cd iptables-1.4.12.1 [root@earth:/usr/src/iptables-1.4.12.1] # make distclean # ./configure CFLAGS="-O2 -march=pentium3" \ CPPFLAGS="-O2 -march=pentium3" \ --enable-devel --enable-libipq
・CFLAGS="-O2 -march=pentium3" (CPU最適化オプション)
・CPPFLAGS="-O2 -march=pentium3" (CPU最適化オプション)
・該当しない場合は指定しない
# make # make install # cd .. [root@earth:/usr/src/src] # tar jcvf iptables-1.4.12.1-110904.tar.bz2 iptables-1.4.12.1/
キャッシュ情報の更新と確認・/usr/local/libの設定がされているなら、ldconfigのみ実行します
# cd ~
[root@earth:~]
# echo /usr/local/lib >> /etc/ld.so.conf.d/usrlocal.conf
# ldconfig
# ldconfig -p | grep -e libip -e libxtable
/sbinにシンボリックリンクを作ります
# cd /sbin
[root@venus:/sbin]
# ln -s /usr/local/sbin/ip6tables ip6tables
# ln -s /usr/local/sbin/ip6tables-restore ip6tables-restore
# ln -s /usr/local/sbin/ip6tables-save ip6tables-save
# ln -s /usr/local/sbin/iptables iptables
# ln -s /usr/local/sbin/iptables-restore iptables-restore
# ln -s /usr/local/sbin/iptables-save iptables-save
フォワーディング設定:/etc/sysctl.conf ファイルの修正
・フォワーディング設定
net.ipv4.ip_forward = 1
・指定されたファイルから読み込んだ内容を sysctl 設定にロードします
[root@earth:~]
# sysctl -p
iptablesの設定 (rpmパッケージの起動スクリプトを使う)・iptablesを新規インストールした場合は、保存したファイルをもどします
# cd /etc/init.d [root@earth:/etc/init.d] # mv iptables-ORG iptables # chmod 755 iptables # cd ../sysconfig [root@earth:/etc/sysconfig] # mv iptables-config.rpmsave iptables-config
physdevサポートの確認# iptables -m physdev --help iptables v1.4.12.1
・省略
physdev match options: [!] --physdev-in inputname[+] bridge port name ([+] for wildcard) [!] --physdev-out outputname[+] bridge port name ([+] for wildcard) [!] --physdev-is-in arrived on a bridge device [!] --physdev-is-out will leave on a bridge device [!] --physdev-is-bridged it's a bridged packet
xen-firewallの実行と確認・適当なディレクトリでxen-firewallスクリプトを実行します
# cd ~
[root@earth:~]
# source xen-firewall
・iptablesのチェック
# service iptables status
設定の保存
[root@earth:~]
# service iptables save
・/etc/sysconfig/iptablesファイルとして保存されます
/etc/sysconfig/iptables-configの修正・自動でロードされないモデュールを既述します
IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"
iptablesスクリプトの実行
[root@earth:~]
# service iptables start
# chkconfig --add iptables
サーバ起動時のfirewall設定の流れiptables起動スクリプトの実行
/etc/sysconfig/iptables,iptables-configが読込まれる
↓
xend,xendomains起動スクリプトの実行
/etc/xen/scripts/vif-bridgeが実行され、
vif-common.shを読み込んで、新しいPHYSDEVチェーンが追加される
vif-common.sh・vif-bridgeスクリプトで読み込まれます
・xendomainsの起動で新しいvifデバイスの設定が追加されます
:/etc/xen/scripts/vif-common.sh
・省略
frob_iptable()
{
if [ "$command" == "online" ]
then
local c="-I"
else
local c="-D"
fi
iptables "$c" FORWARD -m physdev --physdev-is-bridged --physdev-in "$dev" \
"$@" -j ACCEPT 2>/dev/null &&
iptables "$c" FORWARD -m physdev --physdev-is-bridged --physdev-out "$dev" \
-j ACCEPT 2>/dev/null
if [ "$command" == "online" -a $? -ne 0 ]
then
log err "iptables setup failed. This may affect guest networking."
fi
}
・省略
bridge接続の確認・xxxxxxxxxxxxの部分にはMACアドレスが入ります
[root@earth:~]
# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.xxxxxxxxxxxx no vif2.0
vif1.0
peth0
xendomains起動後のiptablesルール・紫色部分 xendomainsの起動で追加された部分
・"service iptables restart"を実行する場合は、"service iptables save"で現況を保存し、
・restart後、手動で/etc/sysconfig/iptables (xendomainsで追加された部分) を修正し、
・サーバ起動時の状態に戻しておく
# Generated by iptables-save v1.4.12.1 on Sun Sep 4 00:34:32 2011 *nat :PREROUTING ACCEPT [1:60] :POSTROUTING ACCEPT [5:392] :OUTPUT ACCEPT [5:392] COMMIT # Completed on Sun Sep 4 00:34:32 2011 # Generated by iptables-save v1.4.12.1 on Sun Sep 4 00:34:32 2011 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [134:15626] -A INPUT -i lo -j ACCEPT -A INPUT -s 192.168.0.0/24 -p icmp -m icmp --icmp-type any -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 192.168.0.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 192.168.0.0/24 -p tcp -m state --state NEW -m tcp --dport 922 -j ACCEPT -A INPUT -s 192.168.0.1/32 -p tcp -m state --state NEW -m tcp --dport 3551 -j ACCEPT -A INPUT -s 192.168.0.21/32 -p tcp -m state --state NEW -m tcp --sport 25 -j ACCEPT -A FORWARD -m physdev --physdev-out vif2.0 --physdev-is-bridged -j ACCEPT -A FORWARD -m physdev --physdev-in vif2.0 --physdev-is-bridged -j ACCEPT -A FORWARD -m physdev --physdev-out vif1.0 --physdev-is-bridged -j ACCEPT -A FORWARD -m physdev --physdev-in vif1.0 --physdev-is-bridged -j ACCEPT -A FORWARD -m physdev --physdev-in peth0 -j ACCEPT COMMIT # Completed on Sun Sep 4 00:34:32 2011
開発版のインストール(参考)・gitで開発版をダウンロードしてインストールします
gitのインストールと実行# cd /usr/src [root@venus:/usr/src] # tar jxf git-1.7.6.1.tar.bz2 # chown -R root:root git-1.7.6.1 # cd git-1.7.6.1 [root@venus:/usr/src/git-1.7.6.1] # ./configure # make # make install
・iptablesのダウンロード
・iptablesディレクトリが作られます
# cd /usr/src
[root@venus:/usr/src]
# git clone git://git.netfilter.org/iptables.git
・アップデートする場合
# cd /usr/src/iptables
[root@venus:/usr/src/iptables]
# git pull -v
iptablesのインストール
# cd /usr/src/iptables
[root@venus:/usr/src/iptables]
# ./autogen.sh
# ./configure CFLAGS="-O2 -march=pentium3" \
CPPFLAGS="-O2 -march=pentium3" \
--enable-devel --enable-libipq
# make
# make install
![]() |
Copyright(c) 528p.com All Rights Reserved. |

