web-dev-qa-db-ja.com

iptablesは長い名前のネットワークインターフェイスでは機能しませんか?

以前は、muli-network-interface-server上の異なるネットワークインターフェイス間でパッケージを転送するようにiptablesを構成していました。

長い間、サーバーをUbuntu1604に更新するまでは問題なく動作しました。

Ubuntu 1604には、networkinterfaces( Predictable Network Interface Names )の名前を変更する新しいカーネルが付属しています。

このサーバーが2つのサブネットワークを相互に接続するとします。

  • インターフェースenp3s0とIP192.168.1.155、ネットワークに接続192.168.1.0/24
  • インターフェースenxa0cec80f64f3 with ip 10.1.1.1はネットワーク10.1.1.0/24に接続します。

以下のように。

               Terminal1(10.1.1.2/24, gateway10.1.1.1)
                                 ||
                                 ||
                                 \/
                   +---------------------------+
                   | enxa0cec80f64f3(10.1.1.1) |
                   |                           |
                   |           Server          |
                   |                           |
                   |   enp3s0(192.168.1.155)   |
                   +---------------------------+
                                 /\
                                 ||
                                 ||
    Host1(192.168.1.111/24, route to 10.1.1.0/24 via 192.168.1.155)

2つのネットワーク内のホストが互いに自由に通信できるようにするには、サーバー上のiptablesを次のように構成します。

$ Sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.1.1.0/24 -d 192.168.1.0/24 -i enxa0cec80f64f3 -o enp3s0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -d 10.1.1.0/24 -i enp3s0 -o enxa0cec80f64f3 -m conntrack --ctstate NEW -j ACCEPT

言い回しが正しく機能しません。

  • Host1ping 192.168.1.155[〜#〜] success [〜#〜];
  • Host1ping 10.1.1.1[〜#〜] success [〜#〜];
  • Host1pingTerminal110.1.1.2)、[〜#〜]失敗しました[〜#〜];
  • サーバーpingTerminal1[〜#〜] success [〜#〜]

Tcpdumpを使用してサーバーをチェックしたところ、enp3s0側からのパケットが転送されませんでした。 (どういうわけか、反対側からのパケットをチェックするだけではいけません)

たぶんiptablesはenxa0cec80f64f3のような長い名前のネットワークインターフェースでは動作しませんか?

3
hxpax

転送の正しいテストはあるインターフェースに存在し、別のインターフェースを介してアクセスされる宛先を持つパケットが他のインターフェースにも現れるかどうかであり、それをテストする正しい方法はtcpdump。これが適切に行われている転送です。内部インターフェースのトラフィック:

[me@router ~]$ Sudo tcpdump -n -n -i em2 icmp 
[...]
07:03:55.490295 IP 178.18.x.139 > 178.18.123.145: ICMP echo request, id 56423, seq 1, length 64
07:03:56.491899 IP 178.18.x.139 > 178.18.123.145: ICMP echo request, id 56423, seq 2, length 64

同時に外部で:

[me@router ~]$ Sudo tcpdump -n -n -i em1 icmp
[...]
07:03:55.490588 IP 178.18.x.139 > 178.18.123.145: ICMP echo request, id 56423, seq 1, length 64
07:03:56.492255 IP 178.18.x.139 > 178.18.123.145: ICMP echo request, id 56423, seq 2, length 64

表示されない場合(表示されない場合)、最初に確認するのはiptablesです。しかし、Michael Hamptonが指摘しているように、ルールにはnothingが含まれていますが、ACCEPTsが含まれているため、問題になることはありません。 Big Kernel ForwardingSwitchを確認することもお勧めします

[me@router ~]$ cat /proc/sys/net/ipv4/ip_forward
1

あなたの場合は0を返しました-転送が有効になっていないことを意味します。これを修正すると、おそらく/etc/sysctl.confの関連する行を変更し、sysctl -pを実行することで、問題が修正されました。

4
MadHatter