在我的 debian 5.0 服务器上,我设置了一些 iptables 规则,如下所示:
ACCEPT tcp -- eee.fff.ggg.hhh aaa.bbb.ccc.ddd tcp dpt:80
DROP tcp -- 0.0.0.0/0 aaa.bbb.ccc.ddd tcp dpt:80
Run Code Online (Sandbox Code Playgroud)
aaa.bbb.ccc.ddd 是我服务器的 IP 地址,而 eee.fff.ggg.hhh 是另一台服务器,它是唯一允许访问该端口的服务器。我注意到我的服务器上有 inet6 addr 设置,并且 netstat 显示 apache2 正在侦听 tcp6 地址:
tcp6 0 0 :::80 :::* LISTEN
Run Code Online (Sandbox Code Playgroud)
ipv6 地址需要单独的 iptables 规则吗?如果是这样,我该怎么做?我对 ipv6 一无所知。谢谢!我必须这样做吗?如果我不使用 ip6tables,有人会绕过 iptable 规则并通过 ipv6 地址连接到我的 :80 端口吗?
我们最近开始试验 IPv6,我们必须解决的首要问题之一是为两个协议栈处理一套完全独立的防火墙 (Linux iptables/ip6ables) 规则。我们的防火墙逻辑主要基于许多特定用途的网络(例如,10.0.0.0/24 是员工工作站网络,10.1.0.0/24 是数据库网络,10.2.0.0/24 是 Web 服务器网络等),并且 IPv6 和 IPv4 的逻辑将基本相同,以不同的网络前缀为模。
人们在做什么来管理这种情况?理想情况下,我希望能够从相同的源文件生成 iptables 和 ip6table 规则集。我已经使用 bash 拼凑了一些东西,但它不一定漂亮,我怀疑那里一定存在更好的解决方案。
我对基于 Puppet 的解决方案特别感兴趣,它充分利用了 Puppet 自己的依赖机制来实现规则(或规则组)的相对排序。
我正在尝试使用 IPtables 的 TRACE 目标,但似乎无法记录任何跟踪信息。我想使用这里描述的内容: Debugger for Iptables。
来自 iptables man for TRACE:
Run Code Online (Sandbox Code Playgroud)This target marks packes so that the kernel will log every rule which match the packets as those traverse the tables, chains, rules. (The ipt_LOG or ip6t_LOG module is required for the logging.) The packets are logged with the string prefix: "TRACE: tablename:chain- name:type:rulenum " where type can be "rule" for plain rule, "return" for implicit rule at the end of a user defined chain and …
有没有办法在不修改实际防火墙配置的情况下测试/检查 iptables 规则脚本的语法(我认为添加和删除每个规则不是最好的方法......)。
我知道 -C 选项,但它不检查链之类的选项,它的返回码有点棘手,因为 1 并不总是意味着语法正确。
谢谢!
当我尝试 traceroute 到远程 ip 时,我得到
send: Operation not permitted
当我停止 iptables 时,traceroute 工作正常。所以,我假设我需要一些 ip 规则来发送。那个规则是什么?
我确实在这里找到了一个解决方案http://forums.fedoraforum.org/showthread.php?t=112516,我将它添加到我的 iptables 中,重新启动它,但过了一段时间 CSF 似乎再次阻止发送。有些东西覆盖了这条规则。
我们有一个简单的路由器,它具有对称类型的 NAT,但是由于该路由器没有为我们提供任何调试接口,我们无法确定特定数据包是否到达了 NAT。
因此,我们要设置一台 LINUX 计算机,使其成为具有对称 NAT 的路由器,这样我们就可以将所有数据包捕获到这个“NAT”并获得我们想要的信息。我们如何在 linux(Fedora 系统,内核 2.6.xx)上执行此操作?
RHEL7/CentOS7 提供了一个新的firewalld防火墙服务,它取代了iptables service(两者都使用iptables工具与内核的 Netfilter 进行交互)。
firewalld可以轻松调整以阻止传入流量,但正如 Thomas Woerner 1,5 年前指出的那样, “目前,firewalld 无法以简单的方式限制传出流量”。据我所知,情况从那时起就没有改变。或者有吗?有没有办法阻止传出流量firewalld?如果没有,除了通过iptables工具手动添加规则之外,还有其他“标准”方式(在 RHEL7 发行版上)阻止传出流量吗?
我正在使用 Open vSwitch 在 virtualBox 来宾计算机之间创建交换网络,并且我希望主机操作系统(Ubuntu 12.04)加入该网络并将其配置为该虚拟网络的网关:
首先,我创建了一个 vswitch 并添加了端口以连接设备(虚拟机将它们用作桥接接口):
ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
Run Code Online (Sandbox Code Playgroud)
之后,我静态设置了 Lubuntu 12.04 虚拟机的 ip:
ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
在主机 os 端,我还设置了 ip 地址:
ifconfig sw0 192.168.1.1/24 up
Run Code Online (Sandbox Code Playgroud)
此时,我可以从 Lubunut ping 到 Ubunutu。我现在想在主机中使用 IP 伪装将流量从网络 192.168.1.0/24 转发到我的物理接口(连接到 Internet):
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
因此,从 Lubuntu(虚拟机),我可以 ping Ubuntu eth1 接口,但无法访问真实网络(例如:真实 LAN 上的网关),我尝试过:
nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 …Run Code Online (Sandbox Code Playgroud) 我正在使用 CentOS 5.x,试图在我的一台服务器上考虑以下 iptables 规则:
-A RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
在另一台服务器上,我有:
-A RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 3 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我知道这两个规则都旨在允许(和限制)传入的 ping 请求,但limit-burst选项是什么?这些津贴是基于每个主机的吗?或者它们是否适用于任何/所有传入的 ICMP 连接?
我如何修改这个 iptables 规则,以便所有进入这台计算机的流量都将转发到 192.168.42.10?
iptables -t nat -A PREROUTING -s 192.168.46.0/24 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.10:80
Run Code Online (Sandbox Code Playgroud)
问题是我从ansible创建ip表规则并在不同的环境中创建它,其中ip地址范围不同,但我想总是将80端口转发到192.168.42.10。