设置这些 iptables 规则时,客户端无法访问互联网

设置这些 iptables 规则时,客户端无法访问互联网

我读过很多其他帖子,但还是不明白这一点。

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;
}

我已经在 *net.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 进行更改时,请务必重新保存。

相关内容