OpenBSDのイーサネットインターフェイスとその他の問題ブリッジング

OpenBSDのイーサネットインターフェイスとその他の問題ブリッジング

現在、OpenBSDファイアウォール、ルーター、およびDNSサーバーを設定しています。私はほとんどの設定がOpenBSDサイトで提供され、pf設定は他のガイドで採用されているなど、さまざまなオンラインガイドに従いました。

主なリンクは次のとおりです。

ブリッジ設定 -https://www.openbsd.org/faq/faq6.html

PF設定 —https://www.openbsd.org/faq/pf/example1.htmlhttps://openbsdrouterguide.net

これを試すときに解決策がわからない2つの主な問題があります。最初の問題は、OpenBSDガイドに記載されているブリッジが正しく機能しないことです(インターフェースにIPがない)。 WAN ポートは ISP から正常に IP を取得し、1.1.1.1 と openbsd.org や google.com などのサイトに ping を送信できます。ただし、システム保守のためにfw_updateまたはpkg_addを実行しようとすると、ホストへのパスがないというエラーメッセージが表示されます。

構文エラーがあり、ブリッジにIPを割り当てることができないため、私のpf.confは正しくロードされません。 pf.confを確認しましたが、構文エラーのある場所が見つかりませんでした。

これは私のpf.confです。

# MACROS
pubif = "em0"
bridge = "bridge0"
wifi = "em5"

# TABLES
table <martians> {0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.0.0/29 192.0.2.0/24 192.88.99.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 240.0.0.0/4 255.255.255.255/32}

# RULES
set skip on lo0

# Spoofs
block in from no-route
block in quick from urpf-failed

# Block Non-routes
block in quick on $pubif from <martians> to any
block return out quick on $pubif from any to <martians>

# Default Block
block return in on {$bridge $wifi}
block return in on ! lo0 proto tcp to port 6000:6010
block return out log proto {tcp udp} user _pbuild
block drop in log on $pubif

# Allow ICMP
match in on $pubif inet proto icmp icmp-type {echoreq} tag ICMP_IN
block drop in on $pubif proto icmp
pass in proto icmp tagged ICMP_IN max-pkt-rate 100/10

# Router to Internet
pass out inet from $pubif

# Interfaces to Internet
pass in on {$bridge $wifi}

# Block DNS not originating from server
block return in quick on $bridge proto {udp tcp} to ! $bridge port {53 853}
block return in quick on $wifi proto {udp tcp} to ! $wifi port {53 853}

# Allow LAN
pass out on {$bridge $wifi} inet keep state

# NAT Rules
pass out on $pubif inet from $bridge:network to any nat-to ($pubif)
pass out on $pubif inet from $wifi:network to any nat-to ($pubif)

これは私のunbound.confです。

server:
    interface: 127.0.0.1
    interface: 10.0.0.1
    interface: 10.0.1.1

    access-control: 0.0.0.0/0 refuse
    access-control: ::0/0 refuse
    access-control: 127.0.0.0/8 allow
    access-control: ::1 allow
    access-control: 10.0.0.0/24 allow
    access-control: 10.0.1.0/24 allow

    hide-identity: yes

    hide-version: yes

    prefetch: yes

    private-address: 10.0.0.0/16

    auto-trust-anchor-file: "/var/unbound/db/root.key"
    root-hints: "/var/unbound/db/root.hints"

    cache-min-ttl: 3600
    serve-expired: yes

remote-control:
    control-enable: yes
    control-interface: /var/run/unbound.sock

これは私のdhcpdです。

subnet 10.0.0.0 netmask 255.255.255.0 {
    option domain-name-servers 10.0.0.1;
    option routers 10.0.0.1;
    range 10.0.0.32 10.0.0.254;
}
subnet 10.0.1.0 netmask 255.255.255.0 {
    option domain-name-servers 10.0.1.1;
    option routers 10.0.1.1;
    range 10.0.1.32 10.0.1.254;
}

マイベザー0inet 10.0.0.1 255.255.255.0 10.0.0.255

私の足0

add vether0
add em1
add em2
add em3
add em4
up

ブリッジインターフェイスはホスト名に簡単に表示されます。 ifとem5はアクセスポイントに接続し、独自のIPでタグを付けて残りのネットワーク(10.0.1.1)から切り離します。

rc.conf.local には次の行があります。

dhcpd_flags=vether0
unbound_flags=
unbound_timeout=240

この時点では、私が何を間違っているのかわかりません。私はすべての指示に従ったような気がします。私が最も確信していない部分はvether0とbridge0です。たぶん私が正しくしていないのではないでしょうか?誰かが私のエラーを見ている場合は、エラーを修正できるように案内していただきありがとうございます。

ありがとう

編集する:

ifconfig -a:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768
    index 8 priority 0 llprio 3
    groups: lo
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
    inet 127.0.0.1 netmask 0xff000000
em0: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500
    lladdr 00:e0:67:2b:a9:ec
    index 1 priority 0 llprio 3
    media: Ethernet autoselect (none)
    status: no carrier
em1: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    lladdr 00:e0:67:2b:a9:ed
    index 2 priority 0 llprio 3
    media: Ethernet autoselect (none)
    status: no carrier
em2: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    lladdr 00:e0:67:2b:a9:ee
    index 3 priority 0 llprio 3
    media: Ethernet autoselect (none)
    status: no carrier
em3: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    lladdr 00:e0:67:2b:a9:ef
    index 4 priority 0 llprio 3
    media: Ethernet autoselect (none)
    status: no carrier
em4: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    lladdr 00:e0:67:2b:a9:f0
    index 5 priority 0 llprio 3
    media: Ethernet autoselect (none)
    status: no carrier
em5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    lladdr 00:e0:67:2b:a9:f1
    index 6 priority 0 llprio 3
    media: Ethernet autoselect (none)
    status: no carrier
    inet 10.0.1.1 netmask 0xffffff00 broadcast 10.0.1.255
enc0: flags=0<>
    index 7 priority 0 llprio 3
    groups: enc
    status: active
bridge0: flags=41<UP,RUNNING> mtu 1500
    index 9 llprio 3
    groups: bridge
    priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
    em4 flags=3<LEARNING,DISCOVER>
        port 5 ifpriority 0 ifcost 0
    em3 flags=3<LEARNING,DISCOVER>
        port 4 ifpriority 0 ifcost 0
    em2 flags=3<LEARNING,DISCOVER>
        port 3 ifpriority 0 ifcost 0
    em1 flags=3<LEARNING,DISCOVER>
        port 2 ifpriority 0 ifcost 0
    vether0 flags=3<LEARNING,DISCOVER>
        port 10 ifpriority 0 ifcost 0
vether0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    lladdr fe:e1:ba:d0:86:5a
    index 10 priority 0 llprio 3
    groups: vether
    media: Ethernet autoselect
    status: active
    inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136
    index 11 priority 0 llprio 3
    groups: pflog

pfctl -nf /etc/pf.conf:

no IP address found for em0
/etc/pf.conf:33: could not parse host specification
no IP address found for bridge0
/etc/pf.conf:39: could not parse host specification
no IP address found for bridge0:network
/etc/pf.conf:49: could not parse host specification

ベストアンサー1

いくつかの考え/質問:

  1. ブリッジにIPを割り当てることはできず、ブリッジ内の1つ以上のインターフェイスに割り当てます。
  2. 同じ理由でbridgeインターフェイスをフィルタリングできません。
  3. 4つのインターフェイスをブリッジするのはなぜですか?trunkブリッジモードの代わりにブロードキャストモードを本当にしたいですか?
  4. $wifiインターフェイスをブリッジし、単一のIPアドレスを持っている場合()にem5別々のルールを作成する必要はありません。実際に割り当てられたIPがないため、これらのem5ルールを評価することはできません。

努力する

  1. 削除vetherbridge
  2. リレーem1-em5ブロードキャストモード(参照man trunkそしてIPを割り当てます。 (あなたが持っているのと同じvether
  3. 適応pf.confし、
  4. 聞いてくださいdhcpd

Wi-Fiクライアント(およびAP)を分離するには、トランキングせずにem5他のサブネットのIPアドレスを提供し、このサブネットの設定をに追加、dhcpd.confリスニングunbound.confdhcpd調整trunk0em5ますpf.conf。この場合、LAN(trunk0)とWLAN()em5間のトラフィックを許可するルールを追加する必要があります。

修正する:

インターフェイスをトランキングする代わりに切り替えて作成してみてくださいvethervport次にフィルタリングに変更し(代わりに!)、ルールを削除します。それでは聞き続けてください。vebbridgepf.confvportveb$wifidhcpdunboundvport

おすすめ記事