linux iptables 修改,linux – 设置IPTables

我正在尝试从我们的产品中删除路由器并使用iptables替换其所有功能.

系统需要执行一般流量控制以及将数据转发到位于LAN后面的特定服务器.目前的设置是 –

> eth0 – 外部

> eth1 – 内部

> eth2 – 内部

> eth3 – 内部

eth0通过DHCP获取IP.

eth1,eth2和eth3构成桥(br0)的一部分,其静态地址为10.0.1.1.

10.0.1.2上有一台服务器,需要为HTTP和MySQL流量提供服务.无法保证将此服务器插入的位置(eth1 / 2/3),但IP是静态的.

我试图设置iptables规则,这似乎很容易只用一个eth设备,但是当需要转发时我会被打结.

这是我到目前为止所尝试的:

# clear and flush everything

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

iptables -t raw -F

iptables -t raw -X

iptables -t security -F

iptables -t security -X

# DROP packets unless covered by rules

iptables -P FORWARD DROP

iptables -P INPUT DROP

# No intention of filtering any outgoing traffic

iptables -P OUTPUT ACCEPT

# Handle our routing

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.0.1.2:80

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3306 -j DNAT --to 10.0.1.2:3306

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Input Chain

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT # ssh

iptables -A INPUT -s 10.0.1.2 -p tcp --dport 3306 -j ACCEPT # ssh

# Forward Chain

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 10.0.1.2 -j ACCEPT

iptables -A FORWARD -i eth0 -p tcp --dport 3306 -d 10.0.1.2 -j ACCEPT

# enable ipv4 forwardning for the system

echo 1 > /proc/sys/net/ipv4/ip_forward

这给了我最终的链/规则设置 –

Chain INPUT (policy DROP 1 packets,49948 bytes)

pkts bytes target prot opt in out source destination

0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

1 52 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

0 0 ACCEPT tcp -- * * 10.0.1.2 0.0.0.0/0 tcp dpt:3306

Chain FORWARD (policy DROP 0 packets,0 bytes)

pkts bytes target prot opt in out source destination

0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 10.0.1.2 tcp dpt:80

0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 10.0.1.2 tcp dpt:3306

Chain OUTPUT (policy ACCEPT 1 packets,196 bytes)

pkts bytes target prot opt in out source destination

但是,我无法通过外部接口(防火墙外部)连接的客户端登录我的内部MysqL服务器.

我已经读过数据包只能通过每一个链(INPUT / FORWARD / OUTPUT),但这仍然是这种情况吗?是我的FORWARD数据包,然后在另一个接口上再次作为INPUT处理?

在上面的任何配置中有什么突出的错误吗?

配置细节 –

netstat -rn的输出

从我可以连接的客户端…

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

0.0.0.0 10.0.0.139 0.0.0.0 UG 0 0 0 eth0

10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0

Telnet按预期连接.

来自我无法连接的客户……

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

0.0.0.0 10.0.0.139 0.0.0.0 UG 0 0 0 eth0

10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wlan0

Telnet只显示Trying 10.0.0.17 …并且实际上从未成功…

网络描述 – s

10.0.0.0是通用办公网络,防火墙框上的eth0接口连接在这里.它的IP地址目前是10.0.0.17 …

10.0.1.0是防火墙eth1 / 2/3后面的网络.

我想通过使用给予eth0(10.0.0.17)的IP地址来访问防火墙后面的服务器.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值