我正在运行 CentOS 5.3 并希望禁用 nf_conntrack 模块以提高 haproxy 的网络性能。我正在使用一些简单的规则运行 iptables。我真的不需要连接跟踪。
我在 Rackspace 云服务器上运行,所以我无法运行自定义内核。我试过运行 modprobe,但这不起作用。
[mmarano@w1 w1]$ sudo modprobe -n -r nf_conntrack
FATAL: Module nf_conntrack is in use.
[mmarano@w1 w1]$ uname -a
Linux w1.somewhere.com 2.6.24-23-xen #1 SMP Mon Jan 26 03:09:12 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux
[mmarano@w1 w1]$ cat /etc/redhat-release
CentOS release 5.3 (Final)
Run Code Online (Sandbox Code Playgroud)
我想在撕掉它之后继续运行 iptables,所以我不能完全抛弃所有的 netfilters。有人有什么想法吗?
在/proc我有两个 nf_conntrack_max 条目:
/proc/sys/net/netfilter/nf_conntrack_max /proc/sys/net/nf_conntrack_max
似乎指向相同的值,因为改变一个也会改变另一个。将这两个设置为/etc/sysctl.conf:
net.netfilter.nf_conntrack_max=65528 net.ipv4.netfilter.ip_conntrack_max=65535
重新启动后该值仍为 32764,因此更改不起作用。有没有人遇到过这个?我的猜测是在加载相关模块之前应用这些值,但希望有人已经知道解决方案。
我有一个带有 2 个以太网卡的 Linux 系统(假设为 A),即 eth0 和 eth1,它们连接到两个完全不相关的 LAN。
基本上 eth0 用于正常的应用程序流量,而 eth1 仅用于调试目的。调试意味着 eth1 使用交叉电缆连接到另一个运行 Wireshark 的 linux 机器(假设它是 B)。我希望 Wireshark 能够处理在 A 的 eth0 上传输的应用程序数据包。
基本上,我需要将行进的数据包从 eth0 接口复制到接口 eth1,以便 B 盒上的 Wireshark 可以嗅探它们(由于某些原因,我无法物理访问 LAN eth0)。我还可能需要根据某些规则(顺便说一下,仅基于 TCP/IP 字段)指定要从 eth0 复制到 eth1 的数据包。
另请注意,不需要将 A 的 eth0 置于混杂模式,因为我只想复制以 A 作为目标的数据包子集
有没有办法单独使用 iptables 来实现这一目标?或者我需要编写一个应用程序来完成这项工作吗?我该怎么做才能“复制”数据包?
我在 /etc/network/interfaces 中使用 IPTABLES
pre-up iptables-restore /etc/firewall.txt
Run Code Online (Sandbox Code Playgroud)
我尝试/etc/init.d/iptables在 Ubuntu 上搜索类似的东西,但似乎不存在。所以如果我必须暂时停止 IPTABLE 以进行系统管理员工作,我该怎么做?
我有一个 VirtualBox VM(主机和来宾 Ubuntu Maverick)。我的 VPN 提供商使用 OpenVPN 来设置 TUN。我想设置一些东西,以便来自 VM 的流量仅通过 VPN,并且如果 VPN 出现故障(它发生了)就会被丢弃。建议?我的iptables-fu有点弱
我尝试过的:使用 VirtualBox 的“仅主机网络”,它为您提供了主机上到来宾的 vboxnet0 环回接口,但无法正确获取 iptables/路由。我想避免在 VM 上使用 NAT,因为我已经使用了双 NAT(ISP 和家用路由器),再多一个级别会让我大吃一惊。
其他可能性:切换到 TAP(如何?)并桥接到 VM。在 VM 内创建 VPN 并过滤除 VPN 与 iptables 连接之外的所有 eth0 流量(但请参见下文)
加分点:如果您能告诉我如何在主机和来宾上使用不同的 VPN 出口点,而无需从来宾通过主机的 VPN 进行双隧道流量。
提出了iptables使用 Puppet管理我们的规则的想法。我看到它augeas有一个iptables镜头,但目前处于实验阶段。
有没有人对如何处理这个问题有任何建议?理想情况下,我想根据服务器的类构建链。
我的端口转发有一些问题。NAT 似乎工作正常,一个端口转发似乎工作(udp 端口 7887 到机器 192.168.1.100)。但不是其他人。
我怀疑这是否重要,但 eth1 和 eth2 位于双端口 NIC 上。
WAN 互联网访问由 dhcp 提供,因此如果可能,解决方案应该独立于 WAN_IP。
/opt/firewall.sh
#!/bin/sh
WAN="eth1"
LAN="eth2"
#ifconfig $LAN up
#ifconfig $LAN 192.168.1.1 netmask 255.255.255.0
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i $LAN …Run Code Online (Sandbox Code Playgroud) 我在提供 MySQL 服务的服务器上有一个相当简单的 iptables 防火墙,但 iptables 似乎给了我非常不一致的结果。
脚本的默认策略如下:
iptables -P INPUT DROP
Run Code Online (Sandbox Code Playgroud)
然后我可以使用以下规则公开 MySQL:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
有了这条规则,我可以从任何源 IP 连接到服务器上的任何目标 IP,而不会出现问题。但是,当我尝试通过将上面的行替换为以下内容来限制对三个 IP 的访问时,我遇到了麻烦(xxx=masked octect):
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.184 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.196 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.251 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
一旦上述规则到位,就会发生以下情况:
我可以从 .184、.196 …
我已经配置了 fail2ban 来监控我收到的某种恶意流量模式并禁止关联的 IP 地址。
一切似乎都运行良好——正则表达式正在适当地匹配模式,并且问题 IP 地址正在添加到 iptables。
但是,当我检查 Apache 日志时,我仍然收到来自被禁止的 IP 地址的点击。就好像 iptables 根本没有运行一样。
所以让我分享一些细节只是为了确认一切都配置正确。
首先,我将清除并重新加载 iptables 规则:
$ sudo iptables -F
$ cat /etc/iptables.firewall.rules
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic - you can …Run Code Online (Sandbox Code Playgroud) iptables ×10
linux ×4
networking ×2
ubuntu ×2
centos ×1
fail2ban ×1
ip-aliasing ×1
mysql ×1
nat ×1
puppet ×1
sysctl ×1
ubuntu-9.10 ×1
virtualbox ×1
vpn ×1