Сбой копирования файла через Ubuntu Gateway с использованием NAT
Мне удалось успешно настроить NAT на моем компьютере с Ubuntu 14.04.4, чтобы мой компьютер выполнял роль шлюза для компьютера, подключенного через внутренний интерфейс (eth0
) к внешнему интерфейсу (eth1
).
Основная цель - не дать внутреннему компьютеру доступ в интернет, а доступ к серверам (subversion и т. Д.) Через внешний интерфейс.
NAT работает и я могу пинговать сервер с внутреннего ПК.
Если я пытаюсь скопировать файл на внутреннем ПК с сервера на внешнем ПК, копирование начинается, но затем останавливается в течение нескольких секунд (скорость начинается примерно с 500 КБ / с, а затем снижается до 0,0 КБ / с). Моя команда копировать прямо:
$ scp user@server:/path/to/file .
user@server's password:
file 1% 704KB 0.0KB/s - stalled -
Точно такая же команда копирования с моего шлюзового ПК выполняется со скоростью 12 МБ / с. Файл составляет около 70 МБ.
Как я могу решить эту проблему, чтобы сделать копию полной, если возможно, быстрой?
Моя настройка:
NAT настроен как описано здесь
Команды для настройки NAT на шлюзе:
sudo iptables -A FORWARD -o eth1 -i eth0 -s 192.168.10.0/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -F POSTROUTING sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Я раскомментировал
net.ipv4.ip_forward=1
в/etc/sysctl.conf
Я включил переадресацию портов с помощью следующей команды:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
PS: я использую scp
как тест, и он показывает скорость, то же самое происходит с rsync
, На самом деле файл загружается установщиком, возможно, через http. Протестировано с использованием wget
и получить точно такое же поведение.
1 ответ
Я предпочитаю быть очень конкретным с интерфейсами и направлениями потока. Предложить это:
sudo iptables -F FORWARD
sudo iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE