Linux 上的路由和過濾

Linux 上的路由和過濾

我有一個有兩個介面的虛擬機,eth0 和 eth1。我希望處理來自 eth0 的資料包,如果它們不符合任何規則,則將其丟棄。如果它們符合規則,那麼我希望它們不做任何修改地轉發到 eth1。換句話說,轉送封包的來源IP和目的IP必須與進入eth0時保持一致。我正在考慮在所有這個過程中使用 iptables,但我開始認為轉發部分在不修改封包的情況下是不可能的。有人能證實這一點嗎?

答案1

使能夠路由在 Linux 上:

IPv4

/proc/sys/net/ipv4/conf/all/forwarding

IPv6

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

您也可以針對每個網路介面卡進行配置,而不是全域配置(已取代all為網路介面卡的名稱)。請注意,此變更不會在重新啟動後持續存在。要在啟動時應用這些,您可以在/etc/sysctl.conf.

您還應該知道rp_filter範圍(反向路徑過濾)。

啟用 IP 轉送後,您可以透過在 iptables(和 ip6tables)FORWARD鏈中新增規則來過濾轉送的封包。

相關內容