두 번째 WiFi 어댑터의 네트워크에 대한 "인터넷 핫스팟" 액세스를 어떻게 공유합니까?

두 번째 WiFi 어댑터의 네트워크에 대한 "인터넷 핫스팟" 액세스를 어떻게 공유합니까?

Linux 라우팅 문제를 해결하는 데 누가 도움을 줄 수 있나요? 기본적으로 Ubuntu 노트북을 사용하여 연결된 네트워크에 대한 인터넷 액세스를 제공하고 싶습니다.

Wi-Fi 네트워크(192.168.42.0/24)가 있는 라즈베리 파이가 있습니다. IP 주소는 192.168.42.20입니다.

인터넷 접속은 모바일 핫스팟을 통해 제공됩니다. (192.168.43.0/24). 인터넷 게이트웨이는 192.168.43.1입니다.

저는 위의 각 네트워크에 하나씩 두 개의 Wi-Fi 카드가 있는 Linux 노트북(Ubuntu)을 가지고 있습니다. (192.168.42.21 및 192.168.43.10)

또한 클라이언트와 인터넷 연결을 성공적으로 공유한 이더넷 카드의 다른 네트워크도 연결했습니다. 네트워크는 10.42.0.0/24입니다. 이 예에서 노트북은 DHCP 서버이고 해당 IP는 10.42.0.1입니다.

저는 노트북을 사용하여 Pi에 인터넷 액세스를 라우팅하려고 합니다. 노트북에 다음과 같은 iptable 규칙을 추가했습니다. 이는 제가 말했듯이 인터넷에 연결할 수 있는 10.42.0./24 네트워크의 전달 규칙에서 비롯됩니다.

-A FORWARD -d 192.168.42.0/24 -o wlx801f0281f02a -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.42.0/24 -i wlx801f0281f02a -j ACCEPT
-A FORWARD -i wlx801f0281f02a -o wlx801f0281f02a -j ACCEPT
ip_forwarding is enabled

Pi에 경로를 추가했습니다. 이제 라우팅 테이블은 다음과 같습니다.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.42.21   0.0.0.0         UG    0      0        0 wlan0
192.168.42.0    0.0.0.0         255.255.255.0   U     303    0        0 wlan0

Pi는 다른 네트워크에 ping을 보낼 수 있고, 다른 두 네트워크는 Pi에 ping을 보낼 수 있습니다.

하지만... 10.42.0.117의 장치는 외부 세계에 원활하게 연결할 수 있지만 Pi는 여전히 인터넷에 액세스할 수 없습니다.

10.42.0.117의 라우팅 테이블은 Pi의 라우팅 테이블과 완전히 "병렬"입니다.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.1       0.0.0.0         UG    0      0        0 eth0
10.42.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo

내가 무엇을 놓치고 있나요?

답변1

따라서 @YoMismo가 나를 올바른 방향으로 인도한 후의 대답은 iptables 규칙을 하나 더 추가하는 것이었습니다.

sudo iptables --table nat -A POSTROUTING -s 192.168.42.0/24 ! -d 192.168.42.0/24 -j MASQUERADE

결과를 볼 수 있습니다

sudo iptables -t nat -L -n -v

요약하면 다음과 같이 액세스해야 하는 장치에 경로를 추가합니다.

sudo ip route add 0.0.0.0/0 via 192.168.42.21 dev wlan0 

192.168.42.21은 "Linux 라우터"에 있는 "브리지" Wi-Fi 어댑터의 IP 주소입니다.

그런 다음 다음과 같이 "linux 라우터"에 iptables 규칙을 추가합니다.

sudo iptables -A FORWARD -d 192.168.42.0/24 -o wlx801f0281f02a -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.42.0/24 -i wlx801f0281f02a -j ACCEPT
sudo iptables -A FORWARD -i wlx801f0281f02a -o wlx801f0281f02a -j ACCEPT
sudo iptables --table nat -A POSTROUTING -s 192.168.42.0/24 ! -d 192.168.42.0/24 -j MASQUERADE

마찬가지로 wlx801f0281f02a는 네트워크 192.168.42.0/24에 연결하는 데 사용하는 브리지 Wi-Fi 어댑터 인터페이스입니다.

따라서 소스 장치의 인터넷 요청은 소스 장치의 경로를 사용하여 "Linux 라우터"의 192.168.42.21로 라우팅되고, 여기서 NAT가 되어 게이트웨이로 전달됩니다.

ip_forward가 활성화되어 있습니다.

요구 사항이 임시/임시인 경우 규칙을 지속적으로 만들거나 bash 스크립트에 넣습니다.

관련 정보