NIC2枚差し環境でのパケット転送でつまづく
環境:CentOS6.3 x86_64 minimal
NIC2枚差し環境でのルーティング設定ではまった。
結果、ルーティングではなくパケット転送の設定が必要だった。
ネットワークは以下の2つ。
192.168.1.0 / 24
192.168.2.0 / 24
クライアントは以下の3つ。
test1.example.local (eth0 : 192.168.1.1 / 24)
yasai.tomato.local (eth0 : 192.168.2.1 / 24)
gw.localdomain (eth0 : 192.168.1.254 / 24, eth1 : 192.168.2.254 / 24)
この状態で、test1 <-> gw、yasai <-> gwのpingはOK。
でtest1 <-> yasaiのpingを成功させたかったのだが、デフォルトだと失敗。
gwの/etc/sysconfig/network-scripts/route-eth* ファイルを新規作成し、
スタティックルーティングを記述しろ、という参考文献に複数当たる。
このため、以下のように設定する。
root @ gw # vi /etc/sysconfig/network-scripts/route-eth0
192.168.2.0/24 via 192.168.2.254 dev eth0
root @ gw # vi /etc/sysconfig/network-scripts/route-eth1
192.168.1.0/24 via 192.168.1.254 dev eth1
結果、
RTNETLINK answers: No such process
RTNETLINK answers: File exist
となる。
ゲートウェイIPやdevの記述のパターンを変えても同様であった。
結果、
1. route-eth{0,1}を削除
2. /etc/sysctl.confの下記記載部分を修正
net.ipv4.ip_forward=0
↓
net.ipv4.ip_forward=1
3. network を restart
これでパケットが転送されるようになった。
※ルーティングは既にconnectedで行われる状態であったので、
あとはパケット転送の許可設定をすればよい状態だったのだと思われる。