我已经为我的一个网站设置了 Solr (v 4.2.1),但在保护管理面板时遇到了问题。我使用 Jetty 运行 Solr。我没有使用 tomcat,我编辑了 example/etc/jetty.xml 并修改了主机值以读取
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.bio.SocketConnector">
<Set name="host"><SystemProperty name="jetty.host" default="10.100.202.42"/></Set>
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>
<Set name="maxIdleTime">50000</Set>
<Set name="lowResourceMaxIdleTime">1500</Set>
<Set name="statsOn">false</Set>
</New>
</Arg>
</Call>
我启动服务器并绑定到
::ffff:10.100.202.42:8983
但是,我可以使用站点的外部 IP 访问管理面板。我是不是漏掉了什么?
ifconfig -a 的输出
eth0 Link encap:Ethernet HWaddr 00:50:56:84:00:02
inet addr:10.100.202.42 Bcast:10.255.255.255 Mask:255.255.0.0
inet6 addr: fe80::250:56ff:fe84:2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:546942285 errors:0 dropped:0 overruns:0 frame:0
TX packets:482684266 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:80045331498 (74.5 GiB) TX bytes:184397661148 (171.7 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:230200 errors:0 dropped:0 overruns:0 frame:0
TX packets:230200 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:335195301 (319.6 MiB) TX bytes:335195301 (319.6 MiB)
和
netstat -apn|grep 8983
tcp 0 0 ::ffff:10.100.202.42:8983 :::* LISTEN 17133/java
tcp 0 0 ::ffff:10.100.202.42:8983 ::ffff:10.100.202.44:36223 TIME_WAIT -
tcp 0 0 ::ffff:10.100.202.42:8983 ::ffff:10.100.202.44:35096 TIME_WAIT -
谢谢
答案1
从ifconfig
输出结果来看,您的服务器显然根本没有真正的(即可公开路由、非 RFC1918)地址。但您的问题提到了可以访问此服务器的公共地址。这意味着您的服务器前面有一些东西将私有地址 NAT 为真实地址(这可能是亚马逊云服务器吗?)。
鉴于此,您无法通过绑定到私有地址并假设没有人可以通过公共地址到达那里来实现您想要的目标。您需要在本地使用某种iptables
逻辑来解决这个问题,以防止“非本地”地址(并且您需要定义“非本地”)连接到端口 8983,或者在执行公有-私有映射的 NAT 设备上解决这个问题。