내 Ubuntu 12.04(정확한) 노트북에는 세 가지 네트워크 인터페이스가 있습니다.
eth0
: 유선 인터페이스가 가끔 인터넷에 연결되는 경우가 있습니다.wlan0
: 무선 인터페이스가 때때로 인터넷에 연결됨vboxnet0
: 다른 컴퓨터(실제로는 호스트 전용 모드로 네트워크로 연결된 VirtualBox 가상 머신)에 연결된 유선 인터페이스(실제로는 VirtualBox 가상 인터페이스)
iptables
NAT/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가 필요하지 않습니다.