我安装了一个LXC容器apache2 (容器监听192.168.122.179:80)。
主机是10.138.141.216。
如果我在pc上通过ssh: ssh -L 45678:192.168.122.179:80 myuser@10.138.141.216建立隧道,我会得到apache2页面(浏览器到http://localhost:45678)
但是,如果我断开ssh隧道并只使用iptables,http://10.138.141.216:45678将无法工作:
[~]$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
9 564 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:45678 to:192.168.122.179:80
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 192.168.122.0/24 224.0.0.0/24
2 656 RETURN all -- * * 192.168.122.0/24 255.255.255.255
606 36360 MASQUERADE tcp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
0 0 MASQUERADE udp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
725 101K MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24每当我在浏览器中刷新页面时,我都可以看到pkts和字节数发生变化,但我得到的只是“无法访问此站点”。
所以ssh隧道可以工作,而iptables规则不能...
更新:
使用tcpdump我可以看到"tcp端口eba无法到达“,为什么?
14:46:40.672318 IP 10.79.41.37.57504 > mymachine.eba: Flags [S], seq 2646922897, win 8192, options [mss 1360,nop,wscale 8,nop,nop,sackOK,unknown-33 0x21cc167ee1203a070000], length 0
14:46:40.672402 IP mymachine > 10.79.41.37: ICMP mymachine tcp port eba unreachable, length 72wget http://192.168.122.179从主机内部工作...
发布于 2018-10-06 23:00:01
我不知道为什么,但LXC默认添加了以下规则:
REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable这些在使用时不可见
iptables -t any -L -n -v
删除"-t any“显示了它们。删除这些规则确实起到了作用。
发布于 2018-10-06 17:08:23
Apache通常由主机配置。每个主机监听来自特定域名的请求。
为了使您的主机可访问,您需要侦听IP本身,或者在Apache主机配置中设置主机名或设置默认主机。
您可以使用wget或curl在localhost上执行get请求来测试您的主机配置是否有效。
如果Apache正常工作,请确保没有任何冲突的iptables规则。
https://stackoverflow.com/questions/52677417
复制相似问题