![Ubuntu 11.10 防火墙/网关 - 无客户端互联网访问](https://linux22.com/image/1292308/Ubuntu%2011.10%20%E9%98%B2%E7%81%AB%E5%A2%99%2F%E7%BD%91%E5%85%B3%20-%20%E6%97%A0%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BA%92%E8%81%94%E7%BD%91%E8%AE%BF%E9%97%AE.png)
我读过很多其他帖子,但还是不明白这一点。
eth0 是我的外部设备,连接到 Comcast 调制解调器。服务器可以毫无问题地访问互联网。
eth1 是内部的,为客户端运行 DHCP。我的 DHCP 运行正常,我的所有客户端都可以获取 IP 并 ping 服务器,但它们无法访问互联网。
我正在使用 ISC-DHCP-SERVER 并且已设置/etc/default/isc-dhcp 服务器到接口="eht1"
这是我的dhcpd配置文件文件位于/etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 10.0.10.0 netmask 255.255.255.0 {
range 10.0.10.10 10.0.10.200;
option routers 10.0.10.2;
option subnet-mask 255.255.255.0;
option domain-name-servers 208.67.222.222, 208.67.220.220; #OpenDNS
# option domain-name "example.com";
default-lease-time 21600;
max-lease-time 43200;
authoritative;
}
我已经做了网.ipv4.ip_forward=1在某一方面的变化/etc/sysctl.conf
这是我的接口文件:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth1 inet static
address 10.0.10.2
netmask 255.255.255.0
network 10.0.10.0
auto eth1
最后,这是我的iptables.conf文件:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
#-A PREROUTING -i eth0 -p tcp --dport 59668 -j DNAT --to-destination 10.0.10.2:59668
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A FORWARD -s 10.0.10.0/24 -o eth0 -j ACCEPT
-A FORWARD -d 10.0.10.0/24 -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
#-A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 10.0.10.2 --dport 59668 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
我完全被难住了。我不明白为什么客户端无法访问互联网。我是不是缺少了什么服务?是不是有什么服务没有运行?任何帮助我都会非常感激。我尽量说得尽可能详细,但如果我遗漏了什么,请告诉我。谢谢!
答案1
问题出在我的 iptables 上,虽然我不确定在哪里。Ubuntu 论坛上的一位先生彻底解决了这个问题。
iptables --flush
iptables --table nat --flush
iptables --delete-chain
#
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
希望这对其他人有帮助!我现在必须再次逐一添加每条规则。谢谢大家的帮助。
另外,你应该保存你的 iptablesiptables-save > /某处/iptables.conf(或某个文件名)然后添加准备 iptables-restore < /somewhere/iptables.conf(或其他)eth0在/etc/网络/接口。这将确保在 nic 激活之前加载规则列表。对 iptables 进行更改时,请务必重新保存。