设置这些 iptables 规则时没有客户端互联网访问

Sir*_*iss 3 iptables firewall networking 11.10 dhcp

我已经阅读了许多其他帖子,但无法弄清楚这一点。

eth0 是我连接到 Comcast 调制解调器的外部。服务器可以访问互联网,没有任何问题。

eth1 是内部的并为客户端运行 DHCP。我的 DHCP 工作得很好,我的所有客户端都可以获得 IP 并 ping 服务器,但他们无法访问互联网。

我正在使用 ISC-DHCP-SERVER 并将/etc/default/isc-dhcp-server 设置INTERFACE="eht1"

这是我的dhcpd.conf文件,位于/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;
}
Run Code Online (Sandbox Code Playgroud)

我在/etc/sysctl.conf 中做了 *net.ipv4.ip_forward=1* 改变

这是我的接口文件:

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
Run Code Online (Sandbox Code Playgroud)

最后 - 这是我的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
Run Code Online (Sandbox Code Playgroud)

我完全被困住了。我无法弄清楚为什么客户端无法访问互联网。我错过了一项服务吗?服务没有运行?任何帮助将不胜感激。我试图尽可能彻底,但如果我错过了什么,请告诉我。谢谢!

Sir*_*iss 5

问题在于我的 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
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助其他人!我现在必须再一次添加每个规则。谢谢大家的帮助。

此外,您应该使用iptables-save > /somewhere/iptables.conf(或某个文件名)保存您的 iptables,然后在/etc/ 中的eth0下添加一个预先准备好的 iptables-restore < /somewhere/iptables.conf(或其他)网络/接口

这将确保在 nic 处于活动状态之前加载规则列表。对iptables进行更改时,请务必重新保存。