Emm*_*mma 4 linux routing iptables
好的,这是一个奇怪的网络设置,但我正在尝试将互联网从一个网络连接到另一个网络。
headless server ((((( wireless router (other network)-----internet
|
|
router (my network) ))))) wireless computers
| | |
wired computers
Run Code Online (Sandbox Code Playgroud)
所以,基本上,我有一个无头 Linux 机器,我想将它设置为我的网络 (eth0) 和另一个网络 (wlan0) 之间的路由器。我应该能够配置其他一切,但我对 iptables 不是很有经验。
我以前在两个有线网络之间做过同样的事情,但我从来没有写过规则。
Edu*_*nec 10
实际上,您实际上并不需要 iptables 来进行基本路由 - iptables 可以帮助您进行过滤和 NAT(以及其他功能)。
您可以通过以下方式激活数据包转发:
sysctl -w net.ipv4.conf.all.forwarding=1
Run Code Online (Sandbox Code Playgroud)
添加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
Run Code Online (Sandbox Code Playgroud)
如果您不进行过滤但想要(顺便说一下,您也应该这样做 - 请参阅@Red Tux 的评论,默认情况下过滤并只允许最小值是一种很好的做法)添加前面的规则以及以下规则:
iptables -P FORWARD DROP
Run Code Online (Sandbox Code Playgroud)
这会更改策略,因此所有不匹配任何规则的数据包都将被丢弃。
此外,如果您想要真正的安全性,您可能还应该对 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
Run Code Online (Sandbox Code Playgroud)
这仅允许来自有线网络中设计主机的 SSH(注意警告),允许环回接口上的所有流量(某些软件需要)并丢弃所有其余流量。
如您所见,您只能通过使用-p tcp|udp --dport N. 您也应该考虑在 FORWARD 链上执行此操作以提高安全性。
| 归档时间: |
|
| 查看次数: |
34190 次 |
| 最近记录: |