如何将端口转发到在virtualbox vm中运行的lxc容器?

时间:2016-07-18 22:09:16

标签: ubuntu vagrant virtualbox iptables lxc

我有ubuntu/xenial64个虚拟机端口转发设置(config.vm.network "forwarded_port", guest: 80, host: 8080)。在VM内部,我创建了一个lxc容器(ubuntu/trusty),并添加了iptables规则:

iptables -t nat -A PREROUTING -i lxcbr0 -p tcp --dport 80 -j DNAT --to-destination 10.0.3.153:80

在VM内部安装了一个nginx,在VM内部运行了一个lxc容器内部。从VM外部我可以访问在VM内部运行的nginx,但不能访问在lxc容器内运行的nginx。检查我使用(在VM之外):

curl -sSv localhost:8080

或者:

w3m http://localhost:8080

我怎么知道哪一个回应?我停止在VM内部运行的那个,并且没有得到任何响应。但我可以从VM内部访问在lxc容器内运行的nginx就好了。

我做错了什么(除了在VM中运行lxc容器)? :)

这是iptables-save的输出:

# 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

1 个答案:

答案 0 :(得分:0)

看来,我为错误的界面添加了规则。它应该是eth0enp0s25,或者与您的物理网络接口相对应的任何内容:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.3.153:80