Ubuntu 14.04作为网关/路由器和防火墙
我目前的系统设置是Ubuntu 14.04 Desktop 64 Bit,我使用公共IP从路由器使用Internet
eth0 - WAN Public IP 182.xxx eth1 - LAN private IP 192.168.0.1
现在我想使用我的系统作为Gateway
将此连接分发到其他计算机,我的系统IP是192.168.0.1
,网络上的其他计算机使用静态IP 192.168.0.2
和192.168.0.255
作为static
和/或DHCP
。
此外,我想在我的系统上设置防火墙,以便我可以监视和控制网络上其他系统的流量。
-
按Ctrl + Alt + T打开终端
-
输入以下命令编辑
interfaces
文件:sudo vim /etc/network/interfaces
-
使用以下行编辑文件:(添加
netmask
和gateway
)auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 182.xxx netmask xxxx gateway xxxx auto eth1 iface eth1 inet static address 192.168.0.1 netmask xxxx
-
现在编辑
/etc/sysctl.conf
并取消注释:# net.ipv4.ip_forward=1
所以它写道:
net.ipv4.ip_forward=1
并通过输入保存
sudo sysctl -p /etc/sysctl.conf
-
要启用IP伪装,请在终端中输入以下命令集:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
更新:修复奇怪的“–state”导致命令失败并修复nat MASQUERADE到eth0(wan界面)
@ chreekat的评论是正确的,在@Anbu的答案的第5步中交换了以太网适配器,如图所示(截至2017-02-21)创建了一个巨大的安全漏洞,允许公共网络上的任何人不受限制地访问私有网络。
步骤5的校正配置如下所示。
操作原理:(规则#2)当且仅当进入的公共数据包与主机建立的对话相关时,才接受从公共网络进入的数据包(eth0)转发到专用网络(eth1)。私人网络。 (规则#3)接受从专用网络(eth1)进入的所有数据包并将它们转发到公共网络(eth0)。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
这是我用的,总是很好用。 各种教程的组合。 也在Ubuntu 16.04LTS上测试过。
步骤A–确保已安装ufw
sudo apt-get install ufw
步骤B – 配置网络接口 。
sudo nano /etc/network/interfaces
配置interfaces文件如下所示:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The WAN primary network interface iface eth0 inet static address 182.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx #LAN side interface auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 address 192.168.0.1
通过从nano或您喜欢的任何其他编辑器中选择CTRL-X来保存文件。
步骤C – 允许IP转发 。 设置转发。 编辑文件/etc/sysctl.conf
sudo nano /etc/sysctl.conf
删除此行# net.ipv4.ip_forward=1
上的注释,使其成为net.ipv4.ip_forward=1
保存更改并转到下一步。
步骤D – 伪装/转发规则
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
坚持iptables的变化
sudo su sudo iptables-save > /etc/iptables.rules sudo nano /etc/network/if-pre-up.d/iptables
输入此内容:
#!/bin/sh iptables-restore < /etc/iptables.rules exit 0
保存更改然后编辑/创建下一个iptables文件
sudo nano /etc/network/if-post-down.d/iptables
输入此内容:
#!/bin/sh iptables-save -c > /etc/iptables.rules if [ -f /etc/iptables.rules ]; then iptables-restore < /etc/iptables.rules fi exit 0
保存更改。 使两个文件都可执行
sudo chmod +x /etc/network/if-post-down.d/iptables sudo chmod +x /etc/network/if-pre-up.d/iptables
步骤E - 使用ufw配置完成
sudo nano /etc/default/ufw
更改参数转发策略以接受
DEFAULT_FORWARD_POLICY="ACCEPT"
保存更改。
我在端口49870上有SSH,所以我也允许ufw接受该端口上的连接:
sudo ufw allow 49870
步骤F - 不要忘记启用ufw 。
sudo ufw enable
在此阶段,只需重新启动系统即可。 然后所有LAN设备都可以将其用作主网关。 另外, ufw管理防火墙设置非常方便。