arp応答を有効にする設定が何であるかを知りたいです。
2つのインターフェースを持つUbuntuシステムがあります。 1 つはプライベート LAN に接続されたイーサネット、もう 1 つはパブリック インターネットに接続された Wi-Fi です。プライベートLANからインターネットに接続するためにコンピュータが一時的に必要だったため、プライベートLANのアドレスをWiFiネットワークLANにマッピングするようにSNATを設定しました。
編集:アドレスを再翻訳するためにDNATも設定したという事実については言及していません。
8.8.8.8にpingを送信するとアウトバウンドヒットが発生しますが、戻ってきたときにWiFiルーターはNATアドレス(192.168.7.33)を「所有者」を知らないため、arp要求を送信します。
ハードウェアアドレスがイーサネットリンクに関連付けられているハードウェアアドレスであるところで実行しましたsudo arp -v -i wlp1s0 -s 192.168.7.33 84:7b:eb:35:a4:e0
(また、「pub」の後に同じコマンドを実行しましたが、まだ送信されませんでした)。今私のarpテーブルにあります...:
Address HWtype HWaddress Flags Mask Iface
192.168.7.33 ether 84:7b:eb:35:a4:e0 CM wlp1s0
しかし、Ubuntuボックスはまだarpに応答しません。
19:26:59.542278 IP 192.168.7.33 > google-public-dns-a.google.com: 19:27:51.477054 IP 192.168.7.33 > 8.8.8.8: ICMP echo request, id 3312, seq 2692, length 64
19:27:51.493773 ARP, Request who-has 192.168.7.33 tell 192.168.7.254, length 46
最初のメッセージはGoogleへのpingで、2番目のメッセージは192.168.7.33でルーターを見つけることです。
この記事を参照してください。 要求されたIPアドレスが他の(無効になった)インターフェイスに関連付けられている場合、LinuxはARP要求メッセージに応答しません。、カーネルのIPルーティングテーブルを確認しました。
sudo ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.3.0 dev enp0s31f6 proto kernel scope link src 192.168.3.12
local 192.168.3.12 dev enp0s31f6 proto kernel scope host src 192.168.3.12
broadcast 192.168.3.255 dev enp0s31f6 proto kernel scope link src 192.168.3.12
broadcast 192.168.7.0 dev wlp1s0 proto kernel scope link src 192.168.7.117
local 192.168.7.117 dev wlp1s0 proto kernel scope host src 192.168.7.117
broadcast 192.168.7.255 dev wlp1s0 proto kernel scope link src 192.168.7.117
この質問では、ユーザーはそのアドレス(自分のNATとは異なります)へのルートを設定したため、ルートを追加しましたが、まだARPはありません。
パス-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.7.254 0.0.0.0 UG 600 0 0 wlp1s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp1s0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s31f6
192.168.7.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp1s0
192.168.7.33 192.168.3.10 255.255.255.255 UGH 0 0 0 enp0s31f6
コンピュータがARP要求に応答できるようにUbuntuに変更できる設定はありますか?そうでなければ、私たちが答えなかった理由を調べるために、次にどこを見なければなりませんか?
編集2:NATを設定する方法は次のとおりです。
sudo iptables -t nat -A POSTROUTING -s 192.168.3.10 -j SNAT --to-source 192.168.7.33
sudo iptables -t nat -A PREROUTING -d 192.168.7.33 -j DNAT --to-dest 192.168.3.10
編集3:DNAT / SNATから最も仮面舞踏会への変更はより簡単でスケーラブルです。
答え1
ARP応答が自動的に有効になります。/proc
または の一部の項目を使用して機能をオフにすることもできますが、/sys
検索する必要があります。
あなたが持っているのはかなり標準的なNATケースです。 NATの設定方法など、最も重要な情報は提供していませんが、通常は次のように行われます。
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
これにより、転送、iptables
ルールの消去、デフォルトのポリシー設定、チェーンフィルタリングの設定が可能になり、から〜FORWARD
までの$INTIF
すべてのパケットが許可されますが、反対方向の場合は$EXTIF
接続トラッカー()でnf_conntrack
追跡する必要があります。最後に転送されるすべてのパケットはインターフェイスに存在するアドレスMASQUERADED
と共に提供されるため、そのアドレスが変更されても常に正しいアドレスを使用します。SNAT
追加のパスは必要ありません。必要に応じて、送信元アドレスで転送を制限できます。
$INTIF
は内部インターフェイス(LAN)、$EXTIF
は外部インターフェイス(WLAN)です。 Ubuntuが使用するツール(systemdなど)を使用して、それを継続的に作成できます。
これはデフォルトで機能し、操作は必要ありません。接続トラッカーDNATは、追加のルールなしでパケットを正しいアドレスに返し、それをLANに転送し、LANインターフェイス(送信する場所)からARPを送信します。
あなたの設定は多少異なると思います。これにより、間違った場所に興味深いARPが表示されます。