web-dev-qa-db-ja.com

Linux上の2つのネットワーク間のルーティング?

解決策が見つからない問題が1つ発生しました。 2つのNICを搭載したLinux PCを使用しています。最初のnic(eth1)はパブリックIP(おそらくスイッチか何か、実際には関係ない)に接続されているため、eth1はwanに接続され、別のeth0はスイッチに接続してlan nicにします。構成:

eth1 IPアドレス88.200.1xx.xxx // xxxはセキュリティ上の理由の多くですeth0 IPアドレス192.168.1.1

wan ------> [eth1(linux PC)eth0] <----> [switch] <----> [eth1(PC1)]

次に、この2つのネットワークを接続して、PC1がLinux PCとWANにアクセスできるようにします。私はそれを行う方法を知っていると思いますが、それを正しく設定することはできません。これは私が試したものです:

  1. 私はIP転送について知っています(確かに)
  2. 私はeth1のデフォルトgwをwanの正しいIPに設定しました
  3. 私はeth0のデフォルトgwを同じIPに設定しようとしました(ただし、私はできませんでした)

どうすればこれを行うことができますか、私はlinux routeコマンドで試しましたが、行き詰まりました。助けてください。

2
gorgi93

Linuxボックスに2つのNICがあり、どちらもIPで構成されている場合、あるネットワークから別のネットワークへのルートを追加する必要はありません。これは自動的に行われます。

WAN NIC。LAN NICの構成ではこれを行わないでください。)にデフォルトゲートウェイアドレスを追加します。

次に、カーネルで転送を有効にします。

echo 1 >> /proc/sys/net/ipv4/ip_forward

ブート時にこの値を自動設定するには、この行のコメントを外しますin/etc/sysctl.conf

#net.ipv4.ip_forward=1

次に、iptablesにいくつかのルールを設定して、ナッティングと転送を実行します。

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# We allow traffic from the LAN side
iptables -A INPUT -i eth0 -j ACCEPT

######################################################################
#
#                         ROUTING
#
######################################################################

# eth0 is LAN
# eth1 is WAN

# Allow established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# fowarding
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

それでうまくいくはずです。

11
Goez

デフォルトゲートウェイは1つしか設定できないため、設定できるのは1つだけです。

他のインターフェースを介してトラフィックをルーティングするには、永続的な静的ルートを設定し、それをそのインターフェースにバインドする必要があります。

2
MDMarra