한 LAN의 인터넷 연결을 다른 LAN으로 공유하는 방법은 무엇입니까?

한 LAN의 인터넷 연결을 다른 LAN으로 공유하는 방법은 무엇입니까?

내 Mac이 인터넷에 접속할 수 있었으면 좋겠어

Raspberry Pi가 라우터(Router1)에 연결되어 있고 en0IP를 통해 인터넷에 연결되어 있지만 192.168.1.110RPi의 Wi-Fi 포트( )는 wlan0IP(다른 LAN 네트워크)를 통해 다른 라우터(Router2)에 연결되어 있습니다.172.31.198.123

이제 내 Macbook이 Router2에 연결되어 있고(예: IP 사용 172.31.198.100) 내 Raspberry Pi를 통해 인터넷에 액세스하려고 합니다(Pi에 VPN 서버 설정 등).

케이블()을 분리해야만 en0Mac에서 ping을 수행할 수 있습니다. 172.31.198.123그렇지 않으면 Pi가 사용 en0하고 ping을 할 수 없습니다 172.31.198.123.

누구든지 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.110
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

~$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="XXXX-WiFi"
    key_mgmt=NONE
}

답변1

여러 네트워크 인터페이스가 있는 컴퓨터에는 여러 경로가 있어야 합니다. 특히 3rpi에 3개의 경로가 필요하고 Mac에 2개가 필요합니다. 즉, 각 서브넷 앞에 하나의 경로와 기본 라우팅이 필요합니다. (두 번째 라우터를 브리지로 사용한다고 가정하면 그럴 것 같습니다.)

이제 흥미로운 질문이 있습니다. 왜 경로가 자동으로 구성되지 않습니까? 첫 번째 문제는 router2가 dhcp 서버를 실행하고 rpi가 해당 dhcp 서버를 사용하고 있다는 것입니다(기술적으로는 문제가 아니지만 정확히 무엇을 하고 있는지 알지 못하면 혼란스러울 수 있음). 그리고 사용 중인 네트워크 구성입니다. 사용된 도구 rpi는 최고의 클라이언트 유형(최고의 네트워크만 사용)이며 이를 듀얼 클라이언트(인터페이스 간에 패킷을 전달하지 않고 동시에 두 개 이상의 네트워크에 연결) 또는 라우터로 사용하려고 합니다. (두 개 이상의 네트워크를 동시에 연결하여 인터페이스 간에 패킷을 전달합니다). rpi를 통해 Mac을 인터넷에 연결하려는 경우 rpi를 Mac의 기본 게이트웨이로 지정하고 패킷 전달을 활성화해야 합니다.

답변2

가장 좋은 방법은 가장하기 위해 iptables를 사용하는 것입니다(종종 동적 NAT라고 함).

Raspberry Pi에서 다음을 수행합니다.

  1. iptables NAT 모듈을 로드합니다. ( modprobe iptable_nat모듈이 이미 시작된 경우 이 단계가 실패할 수 있으므로 어느 쪽이든 계속 진행해 보세요.)
  2. IP 전달 활성화:echo 1 > /proc/sys/net/ipv4/ip_forward
  3. iptables에서 가장 무도회 규칙을 설정합니다.

    iptables -A POSTROUTING -t nat -o wlan0 -s 172.31.198.0/24 -d 0/0 -j MASQUERADE
    
  4. 필터링 초기 단계에서 iptables가 이 패킷을 삭제하지 않도록 다음 규칙을 추가합니다.

    iptables -A FORWARD -t filter -o wlan0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    
    iptables -A FORWARD -t filter -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    

이제 인터넷으로 가는 트래픽이 추가 라우팅을 위해 Raspberry Pi에 도달할 수 있도록 이를 만들어야 합니다. 두 가지 옵션이 있습니다:

  1. 라우터(router2)에서 Raspberry Pi의 IP 주소(Wi-Fi 카드에 있음)를 기본 GW로 정의합니다.
  2. Mac의 기본 GW를 Raspberry Pi IP로 변경합니다. 이 작업을 수행하려면 다음 명령을 사용할 수 있습니다.

    route del default
    route add default 1.2.3.4
    

    1.2.3.4가 raspberri pi wifi 카드의 IP 주소인 경우.

    해당 네트워크에 연결할 때마다 실행할 수 있도록 스크립트로 보관할 수 있습니다.

물론 가능하다면 옵션 1이 더 좋습니다. 연결된 모든 장치를 인터넷으로 라우팅합니다(그러나 설명에서 말했듯이 이는 원하는 것이 아닐 수도 있음). Mac에서 고정 경로를 정의해야 하는 단점이 없습니다. 다른 네트워크에 연결되면 제거해야 합니다).

이렇게 하면 rasppi 장치에 router2의 모든 패킷을 인터넷으로 전달하고 헤더의 src IP 주소를 Raspberry Pi의 외부 NIC 중 하나로 변경하도록 지시해야 합니다. 이러한 연결로부터 응답이 도착하면 Pi는 응답을 다시 라우팅할 위치를 알고 있습니다. 쉽게 말하면 위장과정이다.

이에 대한 자세한 내용은 여기에서 확인할 수 있습니다. http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:제14장:_Linux_Firewalls_Using_iptables#Masquerading_.28Many_to_One_NAT.29

관련 정보