인터넷 연결입니다

인터넷 연결입니다

내 Raspberry Pi에 대한 브리지를 설정하는 데 문제가 있습니다.

내 설정은 다음과 같습니다.
Fedora 27 워크스테이션을 실행하는 노트북이 있고 이는 wifiRaspberry Pi Zero W 컴퓨터를 통해 usb( 외부 전원 없음, 이더넷 없음, 아무것도 없음) 내 노트북에 연결됩니다. Stretch Lite 이미지를 내 PI에 플래시하고 여기에서 설치했습니다.usb
P4wnP1https://github.com/mame82/P4wnP1
P4wnP1내 pi에는 설치하기 전에 임의의 주소가 있었기 169.254.xxx.xxx때문에 sshpi에 들어가기 위해 USB 이더넷 인터페이스의 IP를 올바른 서브넷으로 변경했습니다. 잠시 후 파이를 온라인으로 전환하고 git을 다운로드하여 저장소를 복제할 수 있는 올바른 설정을 찾았습니다.

pi를 실행 install.sh하고 다시 시작한 후에 pi는 고정 IP 주소를 갖게 되었습니다 172.16.0.1. 나는 동일한 방법을 시도하여 온라인에 접속하고, 인터페이스의 IP를 변경하고, SSH를 통해 pi에 연결하고, Fedora 시스템용 게이트웨이를 설정했습니다.
하지만 파이를 온라인으로 얻을 수는 없습니다.

network manager여기서는 "다른 컴퓨터와 연결 공유"를 활성화 하고 여러 가지를 시도했지만 iptables제대로 작동하지 못했다는 점을 언급해야 할 것 같습니다 .

나는 지난 3일 동안 그것을 알아내려고 노력했지만 성공하지 못했습니다.

이것은 Fedora의 ifconfig입니다.

$ ifconfig
enp0s20f0u6i1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.0.2  netmask 255.255.0.0  broadcast 172.16.255.255
        inet6 fe80::f7f7:80c:8a15:5771  prefixlen 64  scopeid 0x20<link>
        ether ee:98:9b:bc:37:ab  txqueuelen 1000  (Ethernet)
        RX packets 2687  bytes 186674 (182.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1648  bytes 176862 (172.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s31f6: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether c8:5b:76:6b:e4:90  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xf1200000-f1220000  

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 1982  bytes 177290 (173.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1982  bytes 177290 (173.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:08:e4:d3  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.106  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::ebcf:d3b1:5a74:185e  prefixlen 64  scopeid 0x20<link>
        ether e4:a7:a0:99:2e:8d  txqueuelen 1000  (Ethernet)
        RX packets 135496  bytes 72791497 (69.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 51579  bytes 21450089 (20.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

여기서 인터페이스는 enp0s20f06i3pi에 연결된 인터페이스입니다. IP 주소를 변경하기 전에는 하나의 주소가 있었고 10.46.0.1재부팅 후에도 동일한 주소입니다.

route -n내 파이 에서

pi@MAME82-P4WNP1:~ $ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.0.2      0.0.0.0         UG    0      0        0 usb0
172.16.0.0      0.0.0.0         255.255.255.252 U     0      0        0 usb0
172.24.0.0      0.0.0.0         255.255.255.0   U     0      0        0 wlan0

그리고 내 파이의 ifconfig

pi@MAME82-P4WNP1:~ $ ifconfig
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 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.0.1  netmask 255.255.255.252  broadcast 172.16.0.3
        inet6 fe80::cc4b:62ff:fe84:7df0  prefixlen 64  scopeid 0x20<link>
        ether ce:4b:62:84:7d:f0  txqueuelen 1000  (Ethernet)
        RX packets 1959  bytes 182340 (178.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3197  bytes 269463 (263.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.24.0.1  netmask 255.255.255.0  broadcast 172.24.0.255
        inet6 fe80::ba27:ebff:fe5e:ceb7  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:5e:ce:b7  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1404 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

route -n내 페도라 에

$ route -n                 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG    600    0        0 wlp4s0
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 enp0s20f0u6i1
192.168.2.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp4s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

resolv.conf내 파이에

pi@MAME82-P4WNP1:~ $ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.46.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

/etc/network/interfaces내 파이 에

pi@MAME82-P4WNP1:~ $ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d


dns-nameservers 8.8.8.8 8.8.4.4

auto usb0

iface usb0 inet manual

auto usb1

iface usb1 inet manual

마지막으로 나는 iptables페도라를 착용하고 있는데 문제는 다음과 같습니다.

$ sudo iptables -L                                                          
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             10.42.0.0/24         state RELATED,ESTABLISHED
ACCEPT     all  --  10.42.0.0/24         anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
FORWARD_direct  all  --  anywhere             anywhere            
FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_IN_ZONES  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc
OUTPUT_direct  all  --  anywhere             anywhere            

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination         
FWDI_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 
FWDI_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 
FWDI_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_OUT_ZONES (1 references)
target     prot opt source               destination         
FWDO_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 
FWDO_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 
FWDO_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_direct (1 references)
target     prot opt source               destination         

Chain FWDI_FedoraWorkstation (3 references)
target     prot opt source               destination         
FWDI_FedoraWorkstation_log  all  --  anywhere             anywhere            
FWDI_FedoraWorkstation_deny  all  --  anywhere             anywhere            
FWDI_FedoraWorkstation_allow  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            

Chain FWDI_FedoraWorkstation_allow (1 references)
target     prot opt source               destination         

Chain FWDI_FedoraWorkstation_deny (1 references)
target     prot opt source               destination         

Chain FWDI_FedoraWorkstation_log (1 references)
target     prot opt source               destination         

Chain FWDO_FedoraWorkstation (3 references)
target     prot opt source               destination         
FWDO_FedoraWorkstation_log  all  --  anywhere             anywhere            
FWDO_FedoraWorkstation_deny  all  --  anywhere             anywhere            
FWDO_FedoraWorkstation_allow  all  --  anywhere             anywhere            

Chain FWDO_FedoraWorkstation_allow (1 references)
target     prot opt source               destination         

Chain FWDO_FedoraWorkstation_deny (1 references)
target     prot opt source               destination         

Chain FWDO_FedoraWorkstation_log (1 references)
target     prot opt source               destination         

Chain INPUT_ZONES (1 references)
target     prot opt source               destination         
IN_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 
IN_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 
IN_FedoraWorkstation  all  --  anywhere             anywhere            [goto] 

Chain INPUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain INPUT_direct (1 references)
target     prot opt source               destination         

Chain IN_FedoraWorkstation (3 references)
target     prot opt source               destination         
IN_FedoraWorkstation_log  all  --  anywhere             anywhere            
IN_FedoraWorkstation_deny  all  --  anywhere             anywhere            
IN_FedoraWorkstation_allow  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            

Chain IN_FedoraWorkstation_allow (1 references)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:netbios-ns ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:netbios-dgm ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     udp  --  anywhere             224.0.0.251          udp dpt:mdns ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:blackjack:65535 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:blackjack:65535 ctstate NEW

Chain IN_FedoraWorkstation_deny (1 references)
target     prot opt source               destination         

Chain IN_FedoraWorkstation_log (1 references)
target     prot opt source               destination         

Chain OUTPUT_direct (1 references)
target     prot opt source               destination        

올바른 항목을 추가해야 할 것 같은데 알 수 없어서 많은 포럼을 검색해 보았습니다. 네트워크 항목을
변경하는 방법이 있습니까 ? 내 인터페이스에는 이전에 해당 IP가 있었으므로 규칙에서 IP를 바꿀 수 있으면 끝입니다. 그렇죠? 10.46.0.0/24172.16.0.0/24

나는 나름대로의 규칙을 설정하려고 노력했지만 그에 따라 규칙을 설정할 sudo iptables -t nat -A POSTROUTING -o wlp4s0 -j MASQUERADE수는 없습니다 .FORWARD

답변1

요약:

Pi를 사용하려면 Fedora가 트래픽을 인터넷으로 전달해야 합니다.

PI

네트워크 카드 1개(우리가 관심을 갖고 있는 카드) 이름은 다음과 같습니다.

usb0 - Fedora에 연결합니다.

페도라:

인터넷에 연결되었습니다.

네트워크 카드 2개(우리가 관심을 갖고 있는) 이름은 다음과 같습니다.

wlp4s0 - 무선 네트워크

enp0s20f0u6i1 -- 파이에 연결합니다.

삶을 더 쉽게 만들려면 예측 가능한 네트워크 인터페이스 이름을 중단하는 것이 좋습니다. 우리는 네트워크 카드 이름을 사용하고 싶고 그 이름이 변경되는 것을 원하지 않습니다.

1 단계: 커널 명령줄에 "net.ifnames=0"을 추가하여 systemd의 예측 가능한 네트워크 인터페이스 이름을 중지합니다.

sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX="net.ifnames=0"

이제 grub을 업데이트하십시오.

sudo grub-mkconfig -o /boot/grub/grub.cfg

노트:

net.ifnames=0 외에 커널 명령줄에 "biosdevname=0" 값이 추가된 것을 보았습니다. 내 설정에는 필요하지 않습니다.

2 단계:

새 규칙 파일을 생성하여 udev 규칙을 사용하여 새 이름을 할당합니다.

sudo vi /etc/udev/rules.d/10-myCustom-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:f3:79:59", KERNEL=="eth*", NAME="test0"

~ 해야 하다줄을 ATTR{address}=="08:00:27:f3:79:59"다음으로 변경하십시오.당신의MAC 주소.

NAME="test0"네트워크 카드에 부여할 이름으로 변경합니다 .

노트:

ATTR{dev_id}=="0x0" and ATTR{type}=="1"내 Ubuntu 14 템플릿에서 제거되었습니다.

KERNEL=="eth*"어떤 사람들은 전체 줄을 삭제하거나 무시하라고 말합니다 . 내 설정에서는 그렇지 않습니다.

저처럼 이 단계 전에 재부팅하다가 MAC 주소를 "잃어버린" 경우, config에서 해당 주소를 표시하지 않으면 /sys/class/net/assignedName/address.

참고: 이 시스템은 이름을 로 변경했습니다 eth0.cat /sys/class/net/eth0/address

3단계:

새 인터페이스 이름에 주소 할당

sudo vi /etc/network/interfaces

auto test0
iface test0 inet static
    address 192.168.2.202 --  use your address
    netmask 255.255.255.0 --  use your address
and what other entries your system requires.

4단계:

재부팅(대부분의 경우 더 쉬움)

이제 이것은 네트워크 카드에 정적 이름을 부여합니다.

Fedora에 iptable 규칙만 추가하면 되므로 Pi에서는 이 작업을 수행할 필요가 없습니다.

가정:

Fedora와 Pi에는 모두 기본 라우팅 테이블이 있으며 iptable 규칙은 없습니다.

노트:

우리는 개인 IP 주소를 공개가 아닌 비공개로 유지하고 싶습니다.

RFC1918 name    IP address range    largest CIDR block (subnet mask)
24-bit block    10.0.0.0 – 10.255.255.255   10.0.0.0/8 (255.0.0.0)
20-bit block    172.16.0.0 – 172.31.255.255 172.16.0.0/12 (255.240.0.0)
16-bit block    192.168.0.0 – 192.168.255.255   192.168.0.0/16 (255.255.0.0)

PI:

IP 주소 할당USB0

sudo vi /etc/network/interfaces

auto usb0
iface usb0 inet static
    address 172.16.0.1
    netmask 255.240.0.0
add any other values needed.

페도라:

IPv4 전달 활성화

sudo vi /etc/sysctl.conf

net.ipv4.ip_forward=1

test0에 IP 주소를 할당합니다(위에서 네트워크 카드 이름을 변경한 것을 기억하세요).

sudo vi /etc/network/interfaces

# This connects to the Pi
auto test0
iface test0 inet static
    address 172.16.0.2
    netmask 255.240.0.0
add any other values needed.

# This is the internet connection
auto wlp4s0
iface wlp4s0 inet static
    address 192.168.2.106
    netmask 255.255.255.255
add any other values needed like
    gateway a.b.c.d
    dns-nameservers 8.8.8.8 8.8.4.4

wlp4s0 주소가 DHCP에 의해 할당된 경우 다음과 유사합니다.

인터넷 연결입니다

auto wlp4s0
iface wlp4s0 inet dhcp

test0에서 wlp4s0으로 패킷을 전달하고 로컬 서브넷 주소 래퍼를 사용하여 패킷을 래핑하도록 iptable 규칙을 설정합니다. 명령줄에 규칙을 입력합니다.

# this rule will forward all traffic from nic test0 to nic wlp4s0
sudo iptables -A FORWARD -i test0 -o wlp4s0 -j ACCEPT
# this rule will continue to forward any existing connections from test0 to wlp4so
sudo iptables -A FORWARD -i test0 -o wlp4s0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# this rule will wrap the packet with a local address so they do not get lost in transit.
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

노트:

방화벽 규칙이 활성화되어 있지 않습니다. 이는 제대로 작동하는 데 필요한 최소한의 사항입니다. 시스템을 보호하려면 추가 규칙을 추가하세요.

재부팅 후에도 iptable 규칙이 지속되도록 합니다.

Ubuntu16에서는 패키지 이름이 iptables-persistentFedora와 다를 수 있습니다.

sudo apt-get install iptables-persistent

현재 iptable 규칙 저장

iptables-save > /etc/iptables/rules.v4

페도라를 다시 시작하십시오.

확인하다:

IP 주소.

iptable 규칙

관련 정보