Articles of iptables

Linux上的IP转发是否充当反向代理?

我环顾四周,看到了许多IP转发解决scheme,将来自一台服务器上的IP的请求转发到另一台服务器上的另一台IP上。 (基本上,将服务器X上的请求转发到123.45.67.89到服务器Y上的98.76.54.321)。这些解决scheme通常包括在Linux内核中启用IP转发,并添加iptables规则以使所有工作都成功。 但是,我不知道服务器Y(及其IP 98.76.54.321)是否会在转发时被暴露。 我基本上是针对一个反向代理,但对于TCP / UDP上的任何端口或协议。 基本上,Linux IP转发是否自动充当反向代理,还是必须采取其他措施来确保服务器Y(其IP)的身份不会通过服务器X显示? 还是我正在考虑错误的解决scheme?

NAT是否将数据包中的源IP重写?

我试图设置端口转发,以便特定的IP(例如1.2.3.4/32)可以通过堡垒(例如5.5.5.5:2222)SSH到应用服务器(10.3.3.3:22)。 堡垒和应用程序服务器在亚马逊的VPC中运行,只有暴露在因特网上的堡垒。 我在堡垒上使用了下面的规则(我把源IP省略了,直到我find它): iptables -t nat -A PREROUTING -p tcp -i eth0 –dport 2222 -j DNAT –to 10.3.3.3:22 但是当我尝试连接,我没有得到任何回应。 在堡垒上运行tcpdump显示stream量正在通过,所以我假设我打到应用服务器的VPC安全组,并没有达到22端口。 我认为这是因为虽然堡垒有权访问应用程序服务器上的端口22,但IP 1.2.3.4却没有。 所以,我的问题是:NAT设置的方式是否自动改变数据包的源IP,使它们看起来是来自堡垒,还是包含原始源IP,在这种情况下是1.2.3.4? 如果报文在转发后包含1.2.3.4作为源IP,那我怎样才能将源地址改为堡垒? 更新 我想特别为SSH我可以设置SSH隧道,但我也需要一个类似的解决scheme,以允许访问几个不同的应用程序服务器上的端口443。 我现在尝试添加SNAT以及: iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 10.2.2.2 但它仍然不起作用(10.2.2.2是堡垒的内部IP)。

iptables:为什么只有OUTPUT规则需要桑巴客户端?

我尝试了下面的samba客户端的iptables规则,他们的工作。 请注意INPUT,OUTPUT和FORWARD的策略都设置为DROP iptables -A OUTPUT -m state –state NEW,ESTABLISHED -p udp –dport 137 -j ACCEPT iptables -A OUTPUT -m state –state NEW,ESTABLISHED -p udp –dport 138 -j ACCEPT iptables -A OUTPUT -m state –state NEW,ESTABLISHED -p tcp –dport 139 -j ACCEPT iptables -A OUTPUT -m state –state NEW,ESTABLISHED -p tcp –dport 445 -j ACCEPT 为什么我们只需要输出samba客户端的规则? […]

iptables爆炸位置

我正试图build立这个规则: iptables -A INPUT -i eth1 -p tcp -s ! 10.111.11.0/24 –dport ssh –syn -m state –state NEW -j ACCEPT 但它不工作。 当我改变的地方! iptables -A INPUT -i eth1 -p tcp ! -s 10.111.11.0/24 –dport ssh –syn -m state –state NEW -j ACCEPT 其确定,但我不知道它是否正常工作。 在网上的每一个啧啧“!” 介于-s和ip之间不在它前面。

OpenVPN不通过VPNredirect所有stream量

我刚刚完成设置我的VPN,谷歌显示我的IP是我的VPN,所以这工作正常。 但是,当我通过SSHlogin到VPN服务器时,它显示我的最后一次login是我的(非VPN'd)IP(即使在多次login/登出之后)。 这使我相信不是所有的数据都通过VPN。 在我的server.conf我有以下指令: push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" 并且iptables安装如下: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 有没有办法来解决这个问题? 它

IPtables NAT疑惑者:为什么来自防火墙主机的stream量不是来自某个指定的源地址,而是被NAT转换的?

我运行一个小型的networking,其中一个Linuxnetworking/邮件服务器也提供了一个窗口集合的NAT的NAT。 其中一台Windows机器显然行事不端(ZeroAccess僵尸networking,尽pipe使用Norton PowerEraser无法find任何问题,并且在数周内只能在/ var / syslog中find3个出站端口16465数据包)。 出于某种原因,设置防火墙规则来丢弃所有传出的16465数据包也不能解决问题,但这是一个无关紧要的问题。 这个问题导致邮件服务器被列入黑名单,例如spamhaus.org。 由于我无法find感染的Windows主机,所以我想到了使用IP别名通过不同的IP地址发送NATstream量的想法。 外部接口: eth0: 216.82.212.230 eth0:1 72.48.103.182 内部接口: eth1: 172.18.90.1 在我的防火墙规则中,我改变了 iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 216.82.212.230 至 iptables -t nat -A POSTROUTING -s 172.18.90.0/24 -o eth0 -j SNAT –to 72.48.103.182 问题是现在一切似乎都是72.48.103.182,包括来自邮件服务器的stream量。 如果我从防火墙主机ssh ssh到另一台外部机器,连接被确定为来自72.48.103.182。 这对我来说没有意义,因为我特别指定了应该是NAT的源IP。 本来我没有“-s 172.18.90.0/24”,尝试上面的行,得到完全一样的结果。 对发生什么事情有任何想法? 我不是想象中的iptables专家,但是在发布到serverfault之前已经努力尝试研究这个。 ======================= root@www:etc# ip ro […]

如何删除某个端口的所有ufw规则?

我正在使用可以在我的数据库服务器上configurationufw,只允许接受从某些服务器连接到特定端口的连接(可以说1234 )。 当一个曾经拥有访问权的服务器被移出池时,可能会忘记删除该服务器的访问规则。 我的解决scheme:设置规则时, 我想删除端口1234所有规则 ,然后使用当前池中的服务器重新创build它们。 不幸的是, ufw delete需要精确指定要删除的规则(端口,协议,scr IP,…)。 我尝试了一个解决scheme,如ufw delete $(ufw status numbered | grep 1234 | <get all the numbers of the rules> ) ,但它变得非常难看,非常快。 有没有更好的方法来删除某个端口的所有规则?

Debian7和tc qdisc问题:RTNETLINK答案:没有这样的文件或目录

我一直在寻找几天,但无法find解决我的问题。 我有一个VPS运行Debian 7,我有root权限。 我想添加一些stream量整形(使用HTB),所以我试图键入的第一行是这样的: tc qdisc add dev tun0 root handle 1: htb default 10 但它似乎是错误的,因为我得到以下错误: RTNETLINK answers: No such file or directory 我的ifconfig显示一个接口tun0,所以它存在。 无论如何,我也尝试了venet0,并且失败了,同样的错误。 当我做tc qdisc list我只有以下规则: qdisc pfifo_fast 0: dev tun0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 […]

如何在不改变源IP地址的情况下将请求redirect到我的外部IP地址/端口到不同的外部IP地址/端口?

我可以使用以下命令,但是它们会更改源IP地址: iptables -t nat -A PREROUTING -p tcp –dport port -j DNAT –to-destination dest_ip:port iptables -t nat -A POSTROUTING -j MASQUERADE 所以我在dest_ip的计算机上得到与这台计算机的IP地址相同的源IP地址,但是我想要得到真正的IP地址。 如果我删除iptables -t nat -A POSTROUTING -j MASQUERADE ,我无法得到任何回应。 我怎么解决这个问题? 所有IP地址是外部IP地址。

使CentOS 7.xa端口转发NAT设备

我想使用iptables使CentOS成为端口转发NAT机器。 这是我第一次尝试这个,我想我可能需要一点帮助。 这是我试图实现的configuration。 我试图通过端口80上的CentOS机器进行远程桌面连接,并且让CentOS连接到端口80上的服务器。 192.168.0.120是通过连接到端口80上的192.168.0.100(CentOS)连接到192.168.30.37端口80的客户端。 CentOS的ens160是192.168.0.100/24 CentOS的ens192是192.168.30.254/24 CentOS的ens224是192.168.40.254/24 我到目前为止所尝试的是: 禁用SELINUX 在/etc/sysctl.conf中启用IPv4转发 /etc/sysctl.conf net.ipv4.ip_forward = 1 / etc / systemconfig / iptables是 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [12:944] -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp […]