ワイヤレスアクセスポイントとルーター間のブリッジでラズベリーパイを設定しようとしています(理由は、デバイスをAPに接続し、tc
それをパイで使用して悪いネットワークをシミュレートしたいからです)。ルータは pi at に接続され、eth0
AP は pi at eth1
(USB-Ethernet アダプタ) に接続されます。
私はこれを使ってdhcpcd
これdnsmasq
を達成しようとしています。ただし、デバイスをAPに接続し、IPアドレス(で指定された範囲内dhcpcd.conf
)を提供できますが、ドメインやIPアドレスに関係なく、すべてのpingがタイムアウトします(パイを接続してpingできない場合)。 AP)。
IPv4転送を有効にしました/etc/sysctl.conf
。
net.ipv4.ip_forward=1
dhcpcd.conf
デフォルト値を追加しました。
# eth1 is connected to the AP
interface eth1
# This is the ip address of the Raspberry Pi
static ip_address=10.0.0.100/24
# This is the ip address of the router
static routers=10.0.0.1
私dnsmasq.conf
は次のようになります(インターフェイスが正しいか完全にはわかりません。APに接続されているインターフェイスに設定しましたが、に変更しても違いはeth0
ありません)。
interface=eth1
listen-address=10.0.0.100
bind-interfaces
server=8.8.8.8
server=8.8.4.4
domain-needed
bogus-priv
dhcp-range=10.0.0.110,10.0.0.130,4h
次のコマンドを実行してiptableルールを追加します(次にiptablesをファイルに保存し、起動時に復元しますrc.local
)。
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
私が読んだところによると、上記のルールはpiを介してトラフィックを正しく転送する必要がありますが、そうではないようです。
dhcpcd
とサービスのステータスを確認しましたが、dnsmasq
エラーのように見えるものは見つかりませんでした。
dhcpcd
状態:
● dhcpcd.service - dhcpcd on all interfaces
Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/dhcpcd.service.d
└─wait.conf
Active: active (running) since Tue 2019-02-26 12:02:43 GMT; 29min ago
Main PID: 368 (dhcpcd)
CGroup: /system.slice/dhcpcd.service
└─368 /sbin/dhcpcd -q -w
Feb 26 12:02:43 raspberrypi dhcpcd[368]: eth0: offered 10.0.0.140 from 10.0.0.1
Feb 26 12:02:43 raspberrypi dhcpcd[368]: eth0: probing address 10.0.0.140/24
Feb 26 12:02:47 raspberrypi dhcpcd[368]: eth0: using IPv4LL address 169.254.202.179
Feb 26 12:02:47 raspberrypi dhcpcd[368]: eth0: adding route to 169.254.0.0/16
Feb 26 12:02:48 raspberrypi dhcpcd[368]: eth0: leased 10.0.0.140 for 86400 seconds
Feb 26 12:02:48 raspberrypi dhcpcd[368]: eth0: adding route to 10.0.0.0/24
Feb 26 12:02:48 raspberrypi dhcpcd[368]: eth0: adding default route via 10.0.0.1
Feb 26 12:02:49 raspberrypi dhcpcd[368]: eth0: deleting route to 169.254.0.0/16
Feb 26 12:02:50 raspberrypi dhcpcd[368]: eth0: no IPv6 Routers available
Feb 26 12:02:50 raspberrypi dhcpcd[368]: eth1: no IPv6 Routers available
dnsmasq
状態:
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-02-26 12:02:43 GMT; 33min ago
Main PID: 401 (dnsmasq)
CGroup: /system.slice/dnsmasq.service
└─401 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -r /run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,19036,8,2,49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5 --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d0
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPDISCOVER(eth1) a0:f3:c1:6d:2f:1b
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPOFFER(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPDISCOVER(eth1) a0:f3:c1:6d:2f:1b
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPOFFER(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPDISCOVER(eth1) a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPOFFER(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPREQUEST(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPACK(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b TL-WR702N
Feb 26 12:35:05 raspberrypi dnsmasq-dhcp[401]: DHCPREQUEST(eth1) 10.0.0.124 f4:5c:89:8e:aa:a1
Feb 26 12:35:05 raspberrypi dnsmasq-dhcp[401]: DHCPACK(eth1) 10.0.0.124 f4:5c:89:8e:aa:a1 george
この状態では、TL-WR702N
APgeorge
とAPに接続されているデバイスです。
私はどこで間違っているのか混乱しています。私はフォローしています地図時間piをブリッジに設定し、参照されたマニュアルページで問題をデバッグしようとしましたが、dnsmasq
役に立ちませんでしたdhcpcd
。iptables
PI持つ設定後に再起動しました。
答え1
リンクされたチュートリアルを確認した後(https://pimylifeup.com/raspberry-pi-wifi-bridge/)、以下の結論を下すことができます。いいえブリッジングチュートリアルではなく、NAT/ルーターチュートリアルです。コメントの1つは次のように言います。
また、この設定は技術的にブリッジではなくWi-FiクライアントNATルーターであることに注意することも重要です。
したがって、実際にブリッジを使用するには、ブリッジのチュートリアルに従ってください。ラズビアンだからDebianブリッジされたネットワーク接続十分に良いでしょう。記載されているbridge-utilsパッケージは実際には必要ありません(古い)。brctl
最新のコマンドで完全に置き換え可能IP ルート 2~のip link
そして(本当に必要な場合)bridge
しかし、それのためにbridge-utils-interfaces
プラグイン上下なら~の構成。
したがって、最終的に次の方法を使用して構成を実行できます。
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
これで、物理インターフェイスがブリッジポートになり、レイヤ3設定が無視されるため、物理インターフェイスにIPを入力しないでください。また重要ではありませんが、ブリッジは最初のインターフェイスのMACアドレスを継承する必要があります。したがって、これが本当に重要でeth1のMACを使用したい場合は、コマンドの前に置いてくださいbridge_ports
(これにより、ルータのDHCP提案が変更される可能性があります)。
これで、eth0
さまざまな設定で参照を変更してインターフェースをとして宣言しますbr0
。たとえば、不要になったため必要ない場合がありますdnsmasq
。
追加情報:
iptables
2 つのインターフェイス間をフィルタリングするための代替または補足の試みを使用したことがある場合ebtables
(ヒント: そうしてはいけません。今はルータではなくブリッジですが、ステートフル透明ファイアウォール ブリッジに必要なものです)。有効な場合br-netフィルタブリッジフィルタリングとIPフィルタリング層の間の特別な相互作用:Linuxベースのブリッジのebtables/iptables相互作用。これを理解しないと、デバッグが困難な結果が生じる可能性があります。たくさん
tc qdisc
効果(例:netem
)は発信方向(出口)にのみ適用されます。 2つのインターフェースeth0
の間にあるので、eth1
特定の意図された操作のためのシャットダウンインターフェースを常に見つけることができると思うかもしれませんが、そうすればeth0
RPi自体がインターネット側で影響を受ける可能性があり、これは私たちが望むものではないかもしれません。の。以下を追加すると、これを防ぐことができます。中間機能ブロック装置(ifb0
)toeth1
:エントリと残りのネットワーキングコードの間にインタフェースを人工的に挿入します。したがって、受信データフローの観点から、インターフェイスは送信インターフェイスであり、eth1
他netem
の解釈では受信フローの一部です。これで、中断することなくTCを適用してeth1
出ることができます。私の答えにはより多くの情報があります。ifb0
eth0
netem を使用したブリッジインターフェイスでのパケット損失のシミュレーション