ヘッダー

ヘッダー

ヘッダー

複数のコンポーネントが独自のネットワークに接続するテスト設定があります。このネットワークのアドレスは172.25.1.0/24です。すべてではありませんが、ほとんどのコンポーネントは複数の標準と文書によって定義されているため、静的IPアドレスを持っています。

当社のネットワークは明らかな理由でこの機械ネットワークとは別にありますが、さまざまなテストシナリオでは、機械ネットワーク内の一部のコンポーネントはインターネットと通信できる必要があります。

設定

セットアップのために、USBイーサネットアダプタ(10/100/1000T)を介してシステムネットワークをRaspberryPi 4(8GiB)に接続し、内蔵ネットワークアダプタをWANアクセス可能な企業ネットワークに接続しました。

アイデアは、Piが172.25.1.0/24から<anywhere>へのトラフィックを偽装することです。

この設定はかなり長い間機能してきましたが、最近はトラフィックルーティングが中断されました。理由はわかりません。

知的財産権規則

今週末までに動作したiptablesルールを設定するスクリプトがあります。

#!/bin/bash

IPTABLES=/sbin/iptables

WANIF='eth0'
LANIF='eth1'

# enable ip forwarding in the kernel
echo 'Enabling Kernel IP forwarding...'
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward

# flush rules and delete chains
echo 'Flushing rules and deleting existing chains...'
$IPTABLES -F
$IPTABLES -X

# enable masquerading to allow LAN internet access
echo 'Enabling IP Masquerading and other rules...'
$IPTABLES -t nat -A POSTROUTING -o $LANIF -j MASQUERADE
$IPTABLES -A FORWARD -i $LANIF -o $WANIF -m state --state NEW,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 NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $LANIF -o $WANIF -j ACCEPT

$IPTABLES -A INPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

echo 'Done.'

生成されたiptablesルールは次のとおりです。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate NEW,RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

私が知っている限り、これはすべてのトラフィックをeth1(LAN)からeth0(WAN)にルーティングする必要があります。これはまさに以前に行ったことです。ただし、GoogleのDNSにpingしようとすると、次のような結果が表示されます。

ping -I eth0 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C
--- 8.8.8.8 ping statistics ---
1317 packets transmitted, 0 packets received, 100% packet loss

この問題にご協力いただきありがとうございます。パケット転送/マスカレーディングがないと、最も重要なテストを実行できません。ありがとうございます!

編集する

要求された出力によるとip route

0.0.0.0/24 via 10.0.101.1 dev eth0 
default via 10.0.101.1 dev eth0 
10.0.101.0/24 dev eth0 proto kernel scope link src 10.0.101.160 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.25.1.0/24 dev eth1 proto kernel scope link src 172.25.1.160 

編集:2番目

RasPiのインターフェイスには、次のIPがあります。 eth0 = 10.0.101.160 eth1 = 172.25.1.160

平らな:Ping 172.25.1.160が期待どおりに機能します。平均。 ping時間は0.5msです。

Piの送信インターフェイス(10.0.101.160)をpingしても機能します。平均。 ping時間は0.667ミリ秒です。

これは、いくつかのトラフィックが少なくともインターフェイスに行き、再びLANに戻ると仮定できることを意味します。しかし、トラフィックが「WAN」(企業ネットワーク)インターフェイスから出ていない理由はまだ理解されていません。 tcpdump -i eth1を実行すると、会社のネットワークからクライアントをpingするときにARP要求がこのインターフェースに到着することがわかります。

13:12:39.660173 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.25.1.57 tell 172.25.1.3, length 46
2 packets captured
492 packets received by filter
484 packets dropped by kernel

ただし、eth0 で tcpdump を呼び出すと、eth1 でメッセージは生成されません。私にとって、これは問題がiptablesルールにあることを示しています。以前は有効でしたが、もう有効ではありません。これは元の問題に戻ったことを意味します。

ベストアンサー1

問題を発見しました

したがって、私の特定の問題に対する解決策は非常に簡単です。他のフォーラムの投稿でこのコンテンツを見落としたか、このアドバイスを含む投稿を見つけることができませんでした。 iptablesルールはすべて大丈夫ですが、次のコマンドがありません。

echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp

このコマンドを実行すると、問題はすぐに解決され、すべてがうまく機能します。

しかし、コメントしてくださった皆さんに感謝します!

おすすめ記事