iptables転送が機能しない

iptables転送が機能しない

ASUS TinkerBoard(RaspberryPi派生製品)をワイヤレスブリッジに設定しようとしています。 2つのWi-Fiアダプタに対応する2つのインターフェイスwlan0とwlx000e3があります。インタフェース wlx000e3 は、インターネットアクセスを提供するルータに接続されます。インターフェイス wlan0 はプライベートアクセスポイントとして使用されます。

私はHostapdとisc-dhcp-serverをインストールして設定し、インターネット上のさまざまなチュートリアルガイドに従ってiptablesを設定しようとしました。https://wiki.archlinux.org/index.php/Internet_sharing#Configurationそれでもうまくいかない場合は、いくつかの他のバリエーションを試してみてください。 )クライアントPCからボードに接続し、ボードからインターネットに接続できます。しかし、理事会に実際に何かを伝えることはできません。

IPv4転送が有効になっています:/proc/sys/net/ipv4/ip_forwardは1です。 iptablesがエラーなしで正常に設定されました。

# iptables -L -v -n -t nat
...
Chain POSTROUTING (policy ACCEPT 15 packets, 986 bytes)
 pkts bytes target prot opt in out source
 14 945 MASQUERADE all -- * wlx000e3 0.0.0.0/0 0.0.0.0/0

# iptables -L -v -n
Chain Input (policy ACCEPT 1547 packets, 114K bytes)
 pkts bytes target prot opt in out source

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source
 0 0 ACCEPT all -- wlan0 wlx000e3 0.0.0.0/0 0.0.0.0/0
 0 0 ACCEPT all -- wlx000e3 wlan0 0.0.0.0/0 0.0.0.0/0 state RELATED, ESTABLISHED

Chain OUTPUT (policy ACCEPT 1074 packets, 195K bytes)
 pkts bytes target prot opt in out source

しかし、まだ動作しません。ログやdmesgにエラーがなく、警告もありません。ほとんどのルールがある転送チェーンにパケットが到達していないことがわかりました。

どんなアイデアがありますか?

1つの関連性があるのは、比較的古いカーネル(4.4.103+)で、モジュールがほとんどないことです(必ずしも必要でない限り手動でビルドするのを避けたい)。ただし、NATサポートの基本が組み込まれている必要があります(NATサポートがまったく存在しない場合は、いくつかのバグが発生すると予想されます)。ただし、カーネルモジュールnf_log_ipv4がないため、パケットトレースを有効にできません。

PS私は何ですか?できるやるべきことは、LOGターゲットをiptablesに追加することだけです。そこで、転送したいクライアントのパケットが「nat」テーブルのPREROUTINGチェーンに表示されることを確認しました。しかし、とにかく彼らはFORWARDチェーンに入らない。これは私のルーティングに問題がある可能性があることを示唆していますが、何も表示されません。

#ip route
default via 192.168.1.254 dev wlx000e3 src 192.168.1.78 metric 302
169.254.238.0/24 dev wlan0 proto kernel scope link src 169.254.238.1
192.168.1.0/24 dev wlx000e3 proto kernel scope link src 192.168.1.78 metric 302

ここで、クライアントは 169.254.238.4、ボードの wlan0 インターフェイスは 169.254.238.1、アップストリーム ルータは 192.168.1.254 です。

ベストアンサー1

私はそれを見つけた。

「Mars Logging」を有効にし、しばらくの間 tcpdump を使用した後、クライアント PC から発信されるすべてのパケットの送信元 IP アドレスフィールドが 0.0.0.0 に設定されていることがわかりました。

より多くのインターネット検索で発見されました。https://superuser.com/questions/1069956/all-outgoing-tcp-packets-have-source-ip-address-0-0-0-0

その後、/etc/dhcp/dhcpd.confでサブネットを172.16.0.0/24に変更し、/etc/network/interfacesでダウンストリーム固定IPを172.16.0.1に変更し、すべてが正常に機能し始めました。

おすすめ記事