우분투 18에서 netplan을 올바르게 구성하십시오.

우분투 18에서 netplan을 올바르게 구성하십시오.

비표준 방식으로 Linux 상자의 Wi-Fi 및 이더넷 포트를 구성하려고 합니다. 나는 이전에 이런 종류의 일에 노출된 적이 없었으므로 나의 순진함을 용서해 주십시오. 나는 기본적으로 먼저 문서화 부분에 YOLO를 적용했고 그것이 작동하도록 하는 데 큰 진전을 이루었습니다. 하지만 여전히 이상한 점이 있고 왜 작동하는지 완전히 이해하지 못합니다. 그래서 가능하다면 이것을 완전히 설명하고 싶습니다. 그리고 더 많은 지식을 가진 사람이 있으면 저를 정정하고 제가 잘못 가고 있는 부분을 설명해주세요.

나는 이더넷 포트 2개와 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
    

이 모든 명령은 수퍼유저로 실행해야 합니다.

관련 정보