포트 포워딩을 사용하여 ubuntu/xenial64
VM을 설정했습니다 (config.vm.network "forwarded_port", guest: 80, host: 8080
). VM의 내부 나는 LXC 컨테이너 (ubuntu/trusty
)를 생성하고, iptables
규칙을 추가했습니다 :virtualbox VM에서 실행중인 lxc 컨테이너로 포트를 전달하는 방법은 무엇입니까?
iptables -t nat -A PREROUTING -i lxcbr0 -p tcp --dport 80 -j DNAT --to-destination 10.0.3.153:80
을 그리고 VM 내에서 실행, LXC 컨테이너 내부의 VM 내부에 하나 nginx
, 하나를 설치했습니다. VM 외부에서 VM 내부에서 실행되는 nginx에 액세스 할 수 있지만 lxc 컨테이너에서 실행되는 것은 액세스 할 수 없습니다.
w3m http://localhost:8080
이 어떻게 하나가 응답하는 알 수 있습니다 :
curl -sSv localhost:8080
또는 : 나는 (VM의 외부)를 사용하여 확인하려면? 나는 VM 내부에서 실행되는 것을 멈추고 응답을 얻지 않습니다. 하지만 VM을 내부에서 lxc 컨테이너 내에서 실행 nginx 액세스 할 수 있습니다.
VM의 내부에서 lxc 컨테이너를 실행하는 경우를 제외하면 무엇이 잘못 되었습니까? 내가 잘못된 인터페이스에 대한 규칙을 추가, 그것은 나타납니다
# iptables-save [9/858]
# Generated by iptables-save v1.6.0 on Mon Jul 18 22:04:52 2016
*mangle
:PREROUTING ACCEPT [293:22775]
:INPUT ACCEPT [261:20343]
:FORWARD ACCEPT [32:2432]
:OUTPUT ACCEPT [174:19243]
:POSTROUTING ACCEPT [206:21675]
-A POSTROUTING -o lxcbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Mon Jul 18 22:04:52 2016
# Generated by iptables-save v1.6.0 on Mon Jul 18 22:04:52 2016
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i lxcbr0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.3.153:80
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
COMMIT
# Completed on Mon Jul 18 22:04:52 2016
# Generated by iptables-save v1.6.0 on Mon Jul 18 22:04:52 2016
*filter
:INPUT ACCEPT [256:19487]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [176:19491]
-A INPUT -i lxcbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i lxcbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i lxcbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i lxcbr0 -p udp -m udp --dport 67 -j ACCEPT
-A FORWARD -o lxcbr0 -j ACCEPT
-A FORWARD -i lxcbr0 -j ACCEPT
COMMIT
# Completed on Mon Jul 18 22:04:52 2016