Linux:使用iptables在两个网络之间路由流量

前端之家收集整理的这篇文章主要介绍了Linux:使用iptables在两个网络之间路由流量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以这是一个奇怪的网络设置,但我试图让互联网从一个网络到另一个网络.
headless server ((((( wireless router (other network)-----internet
       |
       |
router (my network) ))))) wireless computers
   |   |   |
wired computers

所以,基本上,我有一个无头的Linux盒子,我想设置为我的网络(eth0)和其他网络(wlan0)之间的路由器.我应该能够配置其他所有内容,但我对iptables不是很有经验.

我之前在两个有线网络之间做过同样的事情,但我从来没有记下规则.

解决方法

实际上,你并不需要基本路由的iptables – iptables可以帮助你过滤和NAT(以及其他东西).

您可以激活数据包转发:

sysctl -w net.ipv4.conf.all.forwarding=1

将net.ipv4.conf.all.forwarding = 1添加到/etc/sysctl.conf以使设置保持不变.

如果您在服务器上进行过滤(可以使用iptables -nvL进行检查 – 如果FORWARD链的策略为ACCEPT,则表示您未进行过滤),则需要添加规则以允许在网络之间转发数据包:

iptables -I FORWARD -i eth0 -o wlan0 -s wi.red.net.work/24 -d wire.less.net.work/24 -j ACCEPT
iptables -I FORWARD -i wlan0 -o eth0 -s wire.less.net.work/24 -d wi.red.net.work/24 -j ACCEPT

如果你没有过滤但想要(顺便说一下,你也应该看看@Red Tux的评论,默认情况下过滤并只允许最小值)这是一个很好的做法.添加以前的规则加上这个:

iptables -P FORWARD DROP

这会更改策略,以便丢弃所有不匹配任何规则的数据包.

此外,如果您想要真正的安全性,您也应该过滤INPUT链.此链处理来自您的路由器的请求,其目标IP与其自己的目标IP匹配 – 即传入连接(例如SSH).合理的默认值是:

iptables -I INPUT -i eth0 -s allowed.admin.ip.here -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
iptables -P INPUT DROP # make sure you've put your IP on the first rule before running this 
                       # or you'll lock you out of the server

这允许SSH仅来自有线网络中的设计主机(注意警告),允许环回接口上的所有流量(某些软件需要)并丢弃所有其余流量.

正如您所看到的,您只能通过使用-p tcp | udp –dport N来允许某些端口.您应该考虑在FORWARD链上执行此操作以提高安全性.

猜你在找的Linux相关文章