首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NAT端口转发不工作,而ssh隧道工作

问NAT端口转发不工作,而ssh隧道工作
EN

Stack Overflow用户
提问于 2018-10-06 17:05:23
回答 2查看 268关注 0票数 1

我安装了一个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将无法工作:

代码语言:javascript
复制
[~]$ 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无法到达“,为什么?

代码语言:javascript
复制
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 72

wget http://192.168.122.179从主机内部工作...

EN

回答 2

Stack Overflow用户

发布于 2018-10-06 23:00:01

我不知道为什么,但LXC默认添加了以下规则:

代码语言:javascript
复制
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“显示了它们。删除这些规则确实起到了作用。

票数 1
EN

Stack Overflow用户

发布于 2018-10-06 17:08:23

Apache通常由主机配置。每个主机监听来自特定域名的请求。

为了使您的主机可访问,您需要侦听IP本身,或者在Apache主机配置中设置主机名或设置默认主机。

您可以使用wget或curl在localhost上执行get请求来测试您的主机配置是否有效。

如果Apache正常工作,请确保没有任何冲突的iptables规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52677417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档