단순한

단순한

내 Ubuntu 12.04(정확한) 노트북에는 세 가지 네트워크 인터페이스가 있습니다.

  1. eth0: 유선 인터페이스가 가끔 인터넷에 연결되는 경우가 있습니다.
  2. wlan0: 무선 인터페이스가 때때로 인터넷에 연결됨
  3. vboxnet0: 다른 컴퓨터(실제로는 호스트 전용 모드로 네트워크로 연결된 VirtualBox 가상 머신)에 연결된 유선 인터페이스(실제로는 VirtualBox 가상 인터페이스)

iptablesNAT/IP 매스커레이딩 설정을 사용하여 활성화된 인터넷 연결을 다른 컴퓨터와 공유하고 싶습니다 (둘 다 활성화된 경우 유선 연결이 선호됨).

eth0삽입 후 다음 작업을 수행할 수 있습니다.

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward &&
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE &&
sudo iptables -A FORWARD -i eth0 -o vboxnet0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT &&
sudo iptables -A FORWARD -i vboxnet0 -o eth0 -j ACCEPT

유선에서 무선으로 전환하면 분명히 작동이 중지됩니다.

나는 시도했다:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward &&
sudo iptables -t nat -A POSTROUTING -o '!vboxnet0' -j MASQUERADE &&
sudo iptables -A FORWARD -i '!vboxnet0' -o vboxnet0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT &&
sudo iptables -A FORWARD -i vboxnet0 -o '!vboxnet0' -j ACCEPT

하지만 작동하지 않습니다. 인터페이스가 작동하거나 작동 중지될 때 규칙을 변경하기 위해 일부 네트워크 관리자 스크립트를 실행할 수도 있지만 iptables이러한 어려움을 겪지 않고도 가능하다고 생각합니다.

어떤 제안이 있으십니까?

답변1

단순한

iptables모든 것을 가리는 매우 간단한 규칙 세트입니다 . 이는 많은 간단한 설정에 적용됩니다. 완전한 라우터로 작동하면 상자가 작동하지 않습니다. 잠재적으로 불쾌한 NAT 습관이 있습니다.모두컴퓨터에서 나가는 트래픽입니다.

iptables -A POSTROUTING -o eth+ -t nat -j MASQUERADE
iptables -A POSTROUTING -o wlan+ -t nat -j MASQUERADE

가득한

간단한 솔루션이 작동하지 않거나 구성이 더 복잡한 경우 다음 규칙 세트가 도움이 될 수 있습니다.

NATIF='vboxnet+'
MARK=1
iptables -A PREROUTING -t mangle -i $NATIF -j MARK --set-mark $MARK
iptables -A POSTROUTING -o eth+ -t nat -m mark --mark $MARK -j MASQUERADE
iptables -A POSTROUTING -o wlan+ -t nat -m mark --mark $MARK -j MASQUERADE

인터페이스를 통해 들어오는 패킷을 표시 vboxnet*한 다음 나가는 패킷 eth*이나 wlan*태그가 지정된 패킷을 스푸핑(SNAT)합니다.

반품…

iptables규칙 외에도 패킷 전달을 활성화하여 호스트를 라우터로 전환해야 합니다 . 놓다:

net.ipv4.ip_forward=1

/etc/sysctl.conf, 그런 다음 말하세요

sudo sysctl -p /etc/sysctl.conf.

또는:

echo 1 | sudo tee /proc/sys/net/ipv4_ip_forward

게스트에는 호스트의 외부 인터페이스를 통해 패킷을 게이트웨이하는 기본 경로도 있어야 합니다(호스트 전용 모드는 이에 대해 작동하지 않을 수 있음). 라우팅 테이블을 확인하세요(게스트 OS에 따라 다름).

또한 패킷을 검사하기 위해 설치 wireshark하거나 tshark사용하십시오. 이와 같은 일반적인 네트워크 문제를 해결하는 데 이보다 더 좋은 방법은 없습니다.

개인적으로 게스트를 사용하도록 변경하는 것이 좋습니다.브리지 모드 네트워크그리고 호스트의 두 인터페이스를 모두 사용할 수 있도록 합니다. 그런 다음 라우터의 DHCP 서비스를 사용하여 자체적으로 연결하여 자체적으로 로컬 주소를 얻을 수 있습니다. NAT가 필요하지 않습니다.

관련 정보