Ghi*_*der 4 networking linux firewall iptables forwarding
我的问题是将数据包从我的 LAN eth2 转发到可以访问互联网的 eth1,以允许 eth2 访问互联网,这里是我的配置:
auto eth1
iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.254
auto eth2
iface eth2 inet static
address 10.101.26.1
netmask 255.255.0.0
network 10.101.0.0
broadcast 10.101.255.255
Run Code Online (Sandbox Code Playgroud)
iptables 配置:
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
已经在/etc/sysctl.conf 中取消注释net.ipv4.ip forward=1并在/proc/sys/net/ipv4/ip_forward 中写入 1 。
如果我使用连接在 LAN 上且网关为 10.101.26.1 的 PC 进行测试,我无法访问互联网,那么我该如何解决呢?
感谢您的任何帮助!问候
您将需要某种伪装声明。这背后的原因是,目前,从 eth2 到达 eth1 的数据包由 10.101.0.0/16 地址标识。那些 10.101.0.0/16 数据包然后尝试通过 eth1 (192.168.3.0/24) 遍历网络。这将失败,因为这些数据包尚未伪装成来自 192.168.3.1 的数据包。
像下面这样的小脚本应该会有所帮助。根据需要修改:
#!/bin/bash IPTABLES=/sbin/iptables WANIF='eth1' LANIF='eth2' # 在内核中启用ip转发 echo '启用内核 IP 转发...' /bin/echo 1 > /proc/sys/net/ipv4/ip_forward # 刷新规则和删除链 echo '刷新规则并删除现有链...' $IPTABLES -F $IPTABLES -X # 启用伪装以允许局域网上网 echo '启用 IP 伪装和其他规则...' $IPTABLES -t nat -A POSTROUTING -o $LANIF -j MASQUERADE $IPTABLES -A FORWARD -i $LANIF -o $WANIF -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -i $WANIF -o $LANIF -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $WANIF -j 伪装 $IPTABLES -A FORWARD -i $WANIF -o $LANIF -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -i $LANIF -o $WANIF -j ACCEPT echo '完成。
| 归档时间: |
|
| 查看次数: |
22676 次 |
| 最近记录: |