我曾是拼命地在过去的 4 天内,我尝试将我的系统设置为外部可访问的机器,但没有成功。必须说,到目前为止,这是一次很棒的旅程,详细了解了很多有关 Linux 网络的知识,但我在从互联网访问我的机器时遇到了问题。我尝试详细说明所有内容,以便更好地理解。
系统概况:
- 两台旧的 ThinkPad-T60 笔记本电脑,
- 两个 3G USB wifi 适配器(服务提供商:Three.co.uk),
- 操作系统:Ubuntu Quantal 12.10
- 没有路由器、调制解调器或任何其他设备
我尝试实现以下目标:
将笔记本电脑设置为运行 apache2 的外部可访问 Web 服务器,像往常一样监听端口 80。主机通过 3G 加密狗连接到互联网。其路径上没有其他设备,外部路由器等。
到目前为止我已经做了以下事情
为了确保万无一失,我先安装了一个全新的 Ubuntu。安装了 apache2 和 php5。安装了 noip2 模块。
概括
Apache2 已启动并运行良好。我可以从引用 localhost 的浏览器加载默认的未格式化站点。
我在 no-ip.com 注册了基本帐户(动态 DNS 服务),并安装了其软件,使其服务器与我的动态 IP 保持同步。经过测试和仔细检查,它运行完美。
我非常确定,我必须“玩” iptables,所以我阅读了许多教程和文档,以便更好地理解。由于机器仍然无法从外部网络访问,我假设我做的有些事情不太正确。
一些必要的输出
$ifconfig
eth0 Link encap:Ethernet HWaddr 00:1a:6b:35:c0:92
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:16 Memory:ee000000-ee020000
eth1 Link encap:Ethernet HWaddr 58:2c:80:13:92:63
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::5a2c:80ff:fe13:9263/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:119918 errors:0 dropped:0 overruns:0 frame:0
TX packets:103007 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:110091536 (110.0 MB) TX bytes:13204658 (13.2 MB)
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:27915 errors:0 dropped:0 overruns:0 frame:0
TX packets:27915 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2253626 (2.2 MB) TX bytes:2253626 (2.2 MB)
wlan0 Link encap:Ethernet HWaddr 00:1b:77:03:f0:97
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:8888 state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我编写的 Bash 脚本中的 IP TABLES CONFIG 执行方式为 --> ./basicfw.sh eth1
#!/bin/bash
# Delete everything
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -Z
iptables -F INPUT
iptables -P INPUT ACCEPT
iptables -F OUTPUT
iptables -P OUTPUT ACCEPT
iptables -F FORWARD
iptables -P FORWARD ACCEPT
iptables -A INPUT -i $1 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $1 -p tcp -m tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $1 -p tcp -m tcp --dport 8888 -m state --state NEW,ESTABLISHED -j ACCEPT
netstat -anl |监听
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::8888 :::* LISTEN
nmap***.no-ip.org
Starting Nmap 6.01 ( http://nmap.org ) at 2012-11-13 10:57 Central Europe Standard Time
Nmap scan report for 92.41.31.247.threembb.co.uk (92.41.31.247)
Host is up (0.11s latency).
Not shown: 99 filtered ports
PORT STATE SERVICE
113/tcp closed ident
Nmap done: 1 IP address (1 host up) scanned in 3.70 seconds
正如您所见,设置相当糟糕,我刚刚开始研究这个问题。我假设我不必将 eth1 转发到任何其他接口,因为我认为它是流量进入给定地址的接口。
我希望听取有关如何解决与这台机器建立 WAN 连接的问题的成熟意见。
ISP 可能阻止了端口 80,因此我尝试将设置更改为 8080 并从 no-ip.com dns 服务转发。在 iptables 上打开了 8080,正确地重新配置了 apache2,但仍然无法访问。
我不想将此解决方案用于任何实际用例,只是尝试让它发挥作用。这是一个很好的学习曲线。
提前致谢,Pete**
答案1
从您的输出来看,似乎唯一具有 IP 地址的接口是 eth1 - 192.168.1.100。这是一个私有 (rfc1918) IP 地址,您无法直接从互联网访问。
NoIP 如何推断您的公共动态 IP 地址是 92.41.31.247?我没有使用 three.co.uk 服务,所以我不确定这个加密狗有什么用。我假设 NoIP 客户端从您的机器连接到 NoIP 的网站,并被视为这个公共 IP 地址,但您还没有向我们展示您实际上如何连接到互联网 :)
你的路由表是什么样的?查看 的输出ip r
以及配置了 IP 地址的所有接口的列表ip a
。
由于您将所有链的默认策略设置为“接受”,因此您的 iptables 防火墙当前状态下什么也不做。
我可以稍后帮您进行设置,但您首先需要理清连接问题。