LinuxボックスをIPパケットを転送するルーターとして設定するにはどうすればよいですか?


25

IPパケット転送に関するネットワーク実験を行っていますが、なぜ機能するのかわかりません。

両方とも静的IPアドレス(eth0:192.168.100.1、eth1:192.168.101.2)の2つのネットワークインターフェース、eth0およびeth1を備えたLinuxマシンがあります。

私の目標は簡単です。サブネット192.168.100.0/24の宛先を持つeth1からeth0にipパケットを転送し、サブネット192.168.101.0/24の宛先を持つeth0からeth1にipパケットを転送するだけです。

IP転送をオンにしました:

sysctl -w net.ipv4.ip_forward=1

私のルーティングテーブルは次のようなものです:

# route -n
Kernel IP routing table
Destination     Gateway     Genmask        Flags Metric Ref   Use  Iface
192.168.100.0   0.0.0.0     255.255.255.0  U     0      0       0  eth0
192.168.101.0   0.0.0.0     255.255.255.0  U     0      0       0  eth1

しかし、192.168.100.25から192.168.101.47にpingしようとすると、機能しません。

回答:


23

次のようなコマンドを使用して、転送ルールを追加する必要がありますiptables

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT

参照man iptables詳細については、またはハウツー記事をインターネットで検索し、例えばLinuxベースのコンピューター上でNATルーターをセットアップする方法

ここでLinuxのIPマスカレードHOWTO細部のトピックについて説明します。

またFORWARD、上記のACCEPT規則をオーバーライドする他の規則(チェーン内など)がないことを確認する必要があります。ある場合は、おそらく削除したいでしょう。


理由はわかりませんが、まだ機能しません。両方iptables -A FORWARD -i eth0 -o eth1 -j ACCEPTiptables -A FORWARD -i eth1 -o eth0 -j ACCEPTテーブルに追加しました。そして、私のINPUT、OUTPUT、およびFORWARDポリシーはすべてACCEPTです。
義秀牙

間違って設定される可能性のあるものはたくさんあります。たとえば、ホストのIPは、「内部」ネットワーク内のホスト上で「ゲートウェイIP」として指定する必要があります。そのため、IPが「ローカル」ネットワークの範囲内にない場合、パケットはゲートウェイマシン。これは、ADSLルータがLAN内のホストのためのゲートウェイとして登録されている通常のセットアップに類似している
セルゲイ

tracerouteホストで使用すると、パケットが「ルーター」(192.168.100.1)に送られることを示していますが、それ以上は進みません。
義秀牙

1
@UniMouS:MASQUERADEのことを忘れたようです-回答を編集し、記事に新しいリンクを追加しました。
セルゲイ

2

192.168.100.25と192.168.101.47の両方にルートを追加する必要があります。

転送サーバーにIP 192.168.100.1および192.168.101.1がある場合、クライアント192.168.100.25に追加します

ip route 192.168.101.0/24 via 192.1268.100.1

クライアント192.168.101.47で

ip route 192.168.100.0/24 via 192.168.101.1

(これは、iptablesを使用せずに転送のみを有効にした場合に機能します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.