私の問題は、私のLANであるeth2からインターネットにアクセスできるeth1にパケットを転送して、eth2がインターネットにアクセスできるようにすることです。ここでは私の構成です。
auto eth1
iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.254
auto eth2
iface eth2 inet static
address 10.101.26.1
netmask 255.255.0.0
network 10.101.0.0
broadcast 10.101.255.255
iptables構成:
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT
すでにコメントを外しているnet.ipv4.ip forward = 1 in /etc/sysctl.confそして1を/ proc/sys/net/ipv4/ip_forward。
ゲートウェイ10.101.26.1としてLANに接続されたPCでテストした場合、インターネットにアクセスできないので、どうすればこれを解決できますか?
助けてくれてありがとう!よろしく
ある種のマスカレードステートメントが必要になります。この背後にある理由は、現在、eth2からeth1に到着するパケットが10.101.0.0/16アドレスによって識別されているためです。次に、これらの10.101.0.0/16パケットは、eth1(192.168.3.0/24)を介してネットワークを通過しようとします。これらのパケットはまだ192.168.3.1からのパケットとしてマスカレードされていないため、これは失敗します。
以下のような小さなスクリプトが役立つはずです。必要に応じて変更します。
#! /bin/bash IPTABLES=/sbin/iptables WANIF='eth1' LANIF='eth2' #カーネルでip転送を有効にする echo 'カーネルIP転送を有効にしています...' /bin/echo 1>/proc/sys/net/ipv4/ip_forward #ルールのフラッシュとチェーンの削除 echo 'ルールのフラッシュと既存のチェーンの削除...' $ IPTABLES -F $ IPTABLES -X #マスカレードを有効にしてLANインターネットアクセスを許可する echo'IPマスカレードとその他のルールを有効にする... ' $ IPTABLES -t nat -A POSTROUTING -o $ LANIF -j MASQUERADE $ IPTABLES -A FORWARD -i $ LANIF -o $ WANIF -m state --state RELATED、ESTABLISHED -j ACCEPT $ IPTABLES -A FORWARD -i $ WANIF -o $ LANIF -j ACCEPT $ IPTABLES -t nat -A POSTROUTING -o $ WANIF -j MASQUERADE $ IPTABLES -A FORWARD -i $ WANIF -o $ LANIF -m state --state RELATED、ESTABLISHED -j ACCEPT $ IPTABLES -A FORWARD -i $ LANIF -o $ WANIF -j ACCEPT echo '完了。'
あなたの説明に基づいて、私はあなたのPCがルーターの後ろにあり、eth1がルーターを介してインターネットに接続されていると仮定しています。ルーター上に192.168.3.1経由で10.101.0.0/16への静的ルートを作成して、そのネットワーク宛ての応答パケットをPCに転送できるようにする必要があります。