我试图让端口fowarding工作揭露一个LXC容器,当在ubuntu上使用ufw ,但无济于事。 我已经从互联网上的指南([1] [2] [3])中构build了以下工作stream程)。 最显着的是关于/etc/ufw/before.rules的部分,我看到所有的地方重复,但….我不能让它为我工作。
如果任何人按照这个指南,发现成功….请让我知道(所以我可能会先哭,然后回落,写我自己的防火墙工具)
testing环境
主机1上的LXC安装 – 我正在使用普通的LXC,而不是引入LXD设置
sudo lxc-create -n web -t download -- -d centos -r 7 -a amd64 sudo lxc-start -n web sudo lxc-attach -n web
yum install httpd ; yum enable httpd ; yum start httpd exit 我们现在假设
enp0s8和 10.0.3.101 10.0.2.6 sudo iptables -L -t nat查看,伪装已经被LXC安assembly置了 你可能想要快照这个基本状态。
在这一点上有两条路线:一个是使用普通iptables的路由,另一个是使用ufw的B路由
sudo iptables -t nat -A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to "10.0.3.101:80" wget http://10.0.2.6:8080 ,这给了我标准的CentOS登陆页面。 成功! /etc/default/ufw
MANAGE_BUILTINS=yes DEFAULT_FORWARD_POLICY="ACCEPT" /etc/ufw/sysctl.conf
net/ipv4/ip_forward=1 /etc/ufw/before.rules
*filter行之上 ufw allow 8080 ufw enable nc -l 8080 ,并尝试再次从host2进行连接,则会得到HTTP标头转储 – 表示没有发生端口转发。 失败! 现在我用了新的虚拟机,digitalOcean水滴和AWS EC2实例,在短短5个不同的时间里完成了我的步骤 – 没有运气,总是一样的。
有人能指出我做错了什么吗?
[4] Nat线:
*nat :PREROUTING ACCEPT [0:0] -A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to 10.0.3.101:80 COMMIT # comments etc and the rest of the file, like, *filter ...
原来还有几个configuration步骤需要允许一般stream量stream动:
位于/ *filter section之前的/etc/ufw/before.rules的顶部
*nat :PREROUTING ACCEPT [0:0] -A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to 10.0.3.101:80 COMMIT
在底部, 在最后的COMMIT 之前 :
-A FORWARD -o lxcbr0 -j ACCEPT -A FORWARD -i lxcbr0 -j ACCEPT -A INPUT -p udp --dport 53 -i enp0s8 -m state --state NEW -j ACCEPT -A INPUT -p tcp --dport 53 -i enp0s8 -m state --state NEW -j ACCEPT -A INPUT -p udp --dport 67 -i enp0s8 -m state --state NEW -j ACCEPT -A INPUT -p tcp --dport 67 -i enp0s8 -m state --state NEW -j ACCEPT
在/etc/ufw/after.rules的顶部,在filter部分之前:
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE COMMIT
这是为我的testing环境做的,如问题描述中所述。