Ubuntu 18でnetplanを正しく設定してください。

Ubuntu 18でnetplanを正しく設定してください。

非標準的な方法でLinuxボックスのWi-Fiポートとイーサネットポートを設定しようとしています。私はこれまでこのようなことにさらされたことがなかったので、私の無実を許してください。私は基本的に最初に文書化部分にYOLOを適用し、それがうまくいくのに大きな進歩を遂げました。しかし、まだ奇妙なことがあり、なぜ動作するのかを完全に理解していません。だから可能であれば、これを完全に説明したいと思います。そして、より多くの知識を持つ人がいる場合は、私を訂正して、私が間違っている部分を説明してください。

私は2つのイーサネットポートと1つのWi-Fiを備えたミニコンピュータを持っています。インターネットが1つのイーサネットポートを介して受信し、WIFIと別のイーサネットポートを介してブロードキャストされるように設定しようとしています。デフォルトでは、WiFiルーターのように動作するように設定します。

だから。

これは私の/etc/netplan/01-network-manager-all.yamlです。

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s31f6:
            dhcp4: true
        enp1s0:
            addresses:
            - 192.168.2.1/24
            dhcp4: false
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
        wlp2s0:
            addresses:
            - 10.42.0.1/24
            dhcp4: false
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
    bridges:
        br0:
            interfaces: [enp0s31f6, enp1s0, wlp2s0]
            dhcp4: true
            addresses:
            - 100.80.0.1/24
            parameters:
                stp: false
                forward-delay: 0

これは私の/etc/default/dhcpd.confです。

INTERFACES="enp1s0 wlp2s0"

これは私の/etc/dhcp/dhcpd.confです。

option domain-name "whatever.you.want";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
log-facility local7;
subnet 10.42.0.1 netmask 255.255.255.0 {
     range 10.42.0.101 10.42.0.200;
     option subnet-mask 255.255.255.0;
     option routers 10.42.0.1;
     option broadcast-address 10.42.0.255;
}
subnet 100.80.0.1 netmask 255.255.255.0 {
     range 100.80.0.101 100.80.0.200;
     option subnet-mask 255.255.255.0;
     option routers 100.80.0.1;
     option broadcast-address 100.80.0.255;
}
subnet 192.168.2.1 netmask 255.255.255.0 {
     range 192.168.2.101 192.168.2.200;
     option subnet-mask 255.255.255.0;
     option routers 192.168.2.1;
     option broadcast-address 192.168.2.255;
}

正しいコマンドをすべて実行しました。 (私の考えでは)

sudo netplan --debug generate
sudo netplan apply
sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server
sudo systemctl status isc-dhcp-server

だからこれはうまくいきます。しかし、私はおそらく私が何か間違っていることを知っています。また、欠点があります。ランダムに数回中断され、何も言わないエラーが表示されるようです。さらに、特定の4Gホットスポットに接続しようとすると機能しませんが、その4Gホットスポットは他のデバイスにインターネットを正常に送信し、他のイーサネットソースからもインターネットをうまく受信します。

では、この設定は正しいですか?このファイルを正しく設定するにはどうすればよいですか?

また、私のifconfigをよりよく測定するために

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 100.80.0.1  netmask 255.255.255.0  broadcast 100.80.0.255
        inet6 fe80::14a8:83ff:fe5b:a89c  prefixlen 64  scopeid 0x20<link>
        ether 16:a8:83:5b:a8:9c  txqueuelen 1000  (Ethernet)
        RX packets 666051  bytes 252795968 (252.7 MB)
        RX errors 0  dropped 59  overruns 0  frame 0
        TX packets 127129  bytes 14963222 (14.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:01:2e:84:6a:13  txqueuelen 1000  (Ethernet)
        RX packets 691307  bytes 261567317 (261.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 242102  bytes 38886894 (38.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdf300000-df320000  

enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.1  netmask 255.255.255.0  broadcast 192.168.2.255
        ether 00:01:2e:84:6a:14  txqueuelen 1000  (Ethernet)
        RX packets 111556  bytes 21621626 (21.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 523333  bytes 80568249 (80.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 11909999  bytes 4519986237 (4.5 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11909999  bytes 4519986237 (4.5 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.42.0.1  netmask 255.255.255.0  broadcast 10.42.0.255
        ether 00:24:d6:fc:f5:e9  txqueuelen 1000  (Ethernet)
        RX packets 87180  bytes 10348796 (10.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 134948  bytes 148087795 (148.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

答え1

デバイスをルーターとして使用するには(クライアントの観点からデバイスがデフォルトゲートウェイになる)、次の構成設定が必要です。

  1. ルーターデバイスを介してインターネットにアクセスしたいデバイスがそのデバイスをデフォルトゲートウェイとして有効にします。デバイスからDHCPを受信したら、それをDHCPオプションとして渡すことができます。それ以外の場合は、デバイス自体にこのパスを追加する必要があります。次のコマンドを使用してルーティングテーブルを確認しますip

     $ ip route show
     default via 172.31.100.1 dev eno2 proto static
     ...
    

    ルーターホストのアドレスをデフォルトゲートウェイパスとして表示する必要があります。

  2. ルータホストで転送をイネーブルにします。

     $ echo 1 > /proc/sys/net/ipv4/ip_forward
    
  3. eth0「LAN」アダプタからeth1「WAN」アダプタへのルーティングを設定します。eth0eth1

     iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE
     iptables -I FORWARD -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
     iptables -I FORWARD -i eth1  -j ACCEPT
    
  4. テスト。

  5. これらの設定を削除するには:

     iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADE
     iptables -D FORWARD -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
     iptables -D FORWARD -i eth1  -j ACCEPT
     echo 0 > /proc/sys/net/ipv4/ip_forward
    

これらすべてのコマンドはスーパーユーザーとして実行する必要があります。

関連情報