Linux iptables 전달

Linux iptables 전달

나는 3 대의 기계를 가지고 있습니다 :

  • LAN 카드가 있는 서버 1대, 인터넷에 직접 접속할 필요 없음
  • 인터넷용 WiFi 연결 및 LAN 포트 1개가 있는 Windows 호스트 1개
  • Windows 호스트에는 Linux 가상 머신이 1개 있습니다.

[인터넷 없는 서버]---[Linux_VM]---[Windows_host]

  • server_none_internet:eth0 -> 192.168.1.1
  • Linux_VM_WiFi_NAT: wlan0 -> 10.0.2.15
  • Linux_VM_LAN_bridge_card: eth0 -> 192.168.1.254
  • Windows_LAN: 192.168.1.2
  • Windows_WiFi: 172.16.1.1/10.0.2.1(NAT Linux ~ 10.0.2.15)

[Server_without_Internet]에 액세스하기 위해 iptables 전달을 사용하고 싶습니다.

노선:

  • Server_without_internet, Linux_VM_LAN_bridge_card, Windows_LAN: 192.168.1.0/24(192.168.1.254 경유)
  • Linux_VM_WiFi_NAT: 0.0.0.0~10.0.2.1(172.16.1.1)

IPv4 전달을 활성화합니다.

sysctl -w net.ipv4.ip_forward=1

다음과 같이 Linux_VM에 iptables를 구성했습니다.

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0-o wlan0 -j ACCEPT

평평한:

  • 핑 정상: 192.168.1.1 ~ 1.2
  • 핑 성공: 192.168.1.1 ~ 1.254
  • 핑 정상: 192.168.1.2 ~ 1.1
  • 핑 성공: 192.168.1.2 ~ 1.254
  • 핑 정상: 192.168.1.254에서 1.1
  • 핑 정상: 192.168.1.254에서 1.2
  • 핑 정상: 10.0.2.15 ~ 8.8.8.8
  • 핑 성공: 172.16.1.1 / 10.0.2.1 ~ 8.8.8.8
  • 가오핑: 192.168.1.1 ~ 8.8.8.8

[Linux_VM]을 통해 [Server_without_server]에서 인터넷에 액세스하려고 시도하라고 알림

Linux_VM에서 tcpdump를 확인할 때:

  • tcpdump -i eth0 -vvnn : 8.8.8.8에 대한 에코 요청이 표시됩니다.
  • tcpdump -i wlan0 -vvnn : 8.8.8.8에 대한 에코 요청이 표시되지만 에코 응답이 없습니다.

따라서 iptables를 사용하여 wlan0으로 전달하는 eth0은 작동하지만 아무것도 돌려받지 못합니다.

누구든지 아이디어가 있나요?

감사해요

편집하다

conntrack iptables cli 및 IP 공개 icmp 테스트 작업을 추가했습니다.

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 

이제 DNS 확인자가 작동하지 않습니다. server/etc/resolv.conf에는 Google DNS와 OpenDNS DNS가 있습니다.

아이디어?

감사해요

관련 정보